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