"If statement"删除了,c代码运行没有问题,请问是什么原因?
"If statement" deleted, c code runs without problem, what is the reason?
删除if语句后,代码运行没有问题。这是什么原因?此代码给出用户应输入的两个数字(m 和 n)的最大公约数 (GCD)。
#include <stdio.h>
int main() {
int m, n, r;
scanf("%d,%d", &m, &n);
if (m < n) {
r = m;
m = n;
n = r;
}
do {
r = m % n;
m = n;
n = r;
} while (r != 0);
printf("%d\n", m);
return 0;
}
m
是否大于n
并不重要。如果 m
最初小于 n
那么在 do-while 循环的第一次迭代中
do {
r = m % n;
m = n;
n = r;
} while (r != 0);
m
将大于 n
由于语句
m = n;
例如,我们假设 m
等于 2
并且 n
等于 10
。所以 r
等于 m % n
将等于 2
实际上这些语句
m = n;
n = r;
在循环的第一次迭代中交换 m
和 n
。
虽然 if() 语句没有任何问题...
唯一可能出错的是误用 scanf(),除此之外你的代码运行得非常好
删除if语句后,代码运行没有问题。这是什么原因?此代码给出用户应输入的两个数字(m 和 n)的最大公约数 (GCD)。
#include <stdio.h>
int main() {
int m, n, r;
scanf("%d,%d", &m, &n);
if (m < n) {
r = m;
m = n;
n = r;
}
do {
r = m % n;
m = n;
n = r;
} while (r != 0);
printf("%d\n", m);
return 0;
}
m
是否大于n
并不重要。如果 m
最初小于 n
那么在 do-while 循环的第一次迭代中
do {
r = m % n;
m = n;
n = r;
} while (r != 0);
m
将大于 n
由于语句
m = n;
例如,我们假设 m
等于 2
并且 n
等于 10
。所以 r
等于 m % n
将等于 2
实际上这些语句
m = n;
n = r;
在循环的第一次迭代中交换 m
和 n
。
虽然 if() 语句没有任何问题... 唯一可能出错的是误用 scanf(),除此之外你的代码运行得非常好