#include <stdio.h>
int main()
{
int i,sum=0;
i=1;
while( i<=100 ) //循环条件应该是什么呢?
{
sum=sum+i; //这里是不是应该改变循环变量的值
i++;
}
printf("100以内所有整数之和为:%d\n", sum);
return 0;
}
#include <stdio.h>
int main()
{
int i,sum=0;
i=1;
while( i<=100 ) //循环条件应该是什么呢?
{
i++;
sum=sum+i; //这里是不是应该改变循环变量的值
}
printf("100以内所有整数之和为:%d\n", sum);
return 0;
}
以上两段代码有什么区别吗
楼主可以把100改成3以内整数求和,然后单步把i和sum的答案写到纸上就明白了。
例如:
int sum=0;
int i=1;
while(i<=3)
{
i++;
sum=sum+i;
//i++;
}
printf("3以内所有整数和为:%d\n",sum);
正确输入答案应该是:6
此时,用i++在前,会得到错误的值,因为:
第一次循环(此时i=1,可以进入循环):
i=2 (i=i+1 i=2)
0+2=2 (sum = sum +i)
第二次循环(此时i=2,可以进入循环):
i=3(i=i+1 i=3)
2+3=5
第三次循环(此时i=3,可以进入循环):
i=4
5+4=9
明显比正确答案大,而且如楼上所述,还少算了i=1的情况。
正确写法是i++在sum=sum+i后边。从编程顺序也可以理解,先求和,在递增,再求和。
#include <stdio.h> int main() { int i,sum=0; i=1; while( i<100 ) //循环条件应该是什么呢? { sum=sum+i; //这里是不是应该改变循环变量的值 i++; } printf("100以内所有整数之和为:%d\n", sum); return 0; } #include <stdio.h> int main() { int i,sum=0; i=1; while( i<100 ) //循环条件应该是什么呢?(100以内的数是从1~99,不包含100. ) { i++;//从这里已经改变i的值了,下面已经开始从2开始计算了,这样就少算了1的值了 sum=sum+i; //这里是不是应该改变循环变量的值 } printf("100以内所有整数之和为:%d\n", sum); return 0; }
#include <stdio.h> int main() { int i,sum=0; i=1; while( i<100 ) //循环条件应该是什么呢? { sum=sum+i; //这里是不是应该改变循环变量的值 i++; } printf("100以内所有整数之和为:%d\n", sum); return 0; }