C语言,for循环易错点
题目:
编写一程序求满足下面条件的最大的n,使12+22+32+ ⋯ ⋯ \cdots\cdots ⋯⋯+n2 ≤ \leq ≤ 1000输出提示:printf(“%d”,n);
提示:注意循环完成后,n的数值和满足提干要求的n的值的差异。
代码:
#include <stdio.h>
int main(){
int n,sum=0;
for(n=1;sum<=1000;n++){
sum+=n*n;
}
n=n-2;
printf("%d",n);
return 0;
}
起因:
胖仔也是一只新手小白,在做题的时候,搞不懂循环的时候n是多少,那就来详细的写出来看看吧。
铺垫:
for(语句1;表达式;语句2)
{
语句块
};
首先我们要知道,执行for的时候,先执行语句1(且只执行1次),然后判断表达式,如果成立,则执行语句块,然后执行语句2,完成1次循环。
分析:
n= | 表达式 | 语句块sum= | 语句2 n= |
---|---|---|---|
1 | 是 | 1 | 2 |
2 | 是 | 5 | 3 |
⋯ \cdots ⋯ | ⋯ \cdots ⋯ | ⋯ \cdots ⋯ | ⋯ \cdots ⋯ |
13 | 是 | 819 | 14 |
14 | 是 | 1015 | 15 |
15 | 否 |
循环结束后得到n的值为15。
结语:
希望通过这道题,能够让和胖仔一样的小白,对for循环有更多的了解。
(文中若有不当之处,望各位大佬指出,谢谢)