//从键盘上输入一些整数,求所有正数之和
//当输入0或负数时,程序结束
#include
int main(){
printf("请输入:");
int sum = 0;
int a;
scanf("%d", &a);//输入第一个数
getchar();
if(a<=0)exit(1);
while (a>0) {
sum = sum + a;
scanf("%d", &a);
getchar();
}
printf("sum = %d\n", sum);
return 0;
}
/*
我开始是这么想的:
scanf是从缓冲区中取值的,
而缓冲区中有两个字符,
一个是从键盘输入的a,
一个是输完a之后按下的回车。
我在每个scanf后面紧接着加getchar是要把回车取出来,好让后面的scanf能够正常工作。
若没有getchar的话,后面的scanf将会直接从缓冲区中读取,这时读取出来的将会是回车。
/
/
但是!!!
我后来尝试把getchar注释掉,这时候程序也能正常运行!!!而且结果也正确!!!
为什么啊???
*/
C语言。从键盘上输入一些整数,求所有正数之和,当输入0或负数时,程序结束。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-