C语言的问题!输入的成绩为50 70 0 时,为什么一个的和是121,一个的和是120。求详细解答!拜托了!

#include<stdio.h>{
void main(){
int c=1;
int sum=0;
while(c>0){
printf("输入成绩:");
sum=sum+c;
scanf("%d",&c);
}
printf("%d",sum);
}
#include<stdio.h>{
void main(){
int c=1;
int sum=0;
while(c>0){
printf("输入成绩:");
scanf("%d",&c);
sum=sum+c;
}
printf("%d",sum);
}

第1个回答  2012-01-01
第一个: sum=sum+c;
scanf("%d",&c);
你这里是先把 sum + c 以后然后再输入.在输入之前已经把 c 加到 sum 里面了所以多了 1

第二个: scanf("%d",&c);
sum=sum+c;
你这里是先把 c 的值改变了.所以得到的值是正确的.
第2个回答  2012-01-01
就差在第一次循环上了。第一个程序是 1+50+70=121.第二个程序是50+70=120.
第二次当进循环式c的值就被赋成50了,所以就没有那个+1的过程了。
第3个回答  2012-01-01
你这程序,第一个就是逻辑错误,先把成绩之外的东西给加了进去!!
相要至少执行一次循环体的话,改用do - while() 就不必先赋个1值,可免副作用
do{
printf("输入成绩:");
scanf("%d",&c);
if(c>0) sum=sum+c;
}while(c>0);
第4个回答  2012-01-01
两个程序不一样 当然结果不一样了
第一个多加了一次1,当然是121了
第5个回答  2012-01-01
前面一段代码在scanf输入前已经把一开始的c加进去了,也就多了1了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网