C++语言关于if和while的区别!!请大神帮忙瞧瞧
#include<iostream>using namespace std;
int main()
{
int n, m,sum=0;
for (n = 2; n <= 10000; n++)
{
sum = 0;
for (m = 1; m <= n / 2; m++)
{
if (n % m == 0)sum += m; //为啥将if换为while后,程序一直显示不出结果??
}
if (sum == n) cout << "n=" << sum << endl;
}
return 0;
} 本帖最后由 jackz007 于 2021-3-15 19:54 编辑
if 是条件判断,当条件成立时,相应的语句将被执行一次,而 while 是循环,当条件成立时,相应的语句会被循环执行多次,如果条件始终成立,就会在这里陷入死循环。
if (n % m == 0)sum += m;
当 n % m == 0 条件成立时,这条语句:
sum += m
只会执行一次,如果把 if 换成 while
while (n % m == 0)sum += m;
只要 (n % m == 0 的条件成立,语句
sum += m
将会多次得到执行,直到条件不成立为止。
看看 while 语句的条件和执行的语句
while (n % m == 0)sum += m;
如果 n % m == 0 成立,那么,后面的操作 sum += m 对构成 while 语句条件要素的 n 和 m 并没有任何的改变,循环条件将永恒成立,就是说,这个循环注定就是死循环。这就是程序一直不显示结果的直接原因。
jackz007 发表于 2021-3-15 19:48
if 是条件判断,当条件成立时,相应的语句将被执行一次,而 while 是循环,当条件成立时,相应的语 ...
当此处改写为do,while语句为什么也不行了呢? 肚子饿了233 发表于 2021-3-15 20:02
当此处改写为do,while语句为什么也不行了呢?
只要循环条件和要执行的语句不变,do while 也一定是死循环无疑。
页:
[1]