Oda*_*dar -1 c loops for-loop while-loop
我正在尝试创建一个循环,让用户逐个输入数字并计算所有这些数字的总和,直到用户输入 0 作为输入。但是,我的代码只运行一次,然后就停止了。
#include <stdio.h>
int main(void) {
int i = 0;
int num;
int total = 0;
printf("Give me a number \n");
scanf("%d", num);
if(num < 0 && num > 0){
printf("Give me a number \n");
scanf("%d", num);
total = total + num;
i = i + 1;
}
printf("The total is %d", total);
}
Run Code Online (Sandbox Code Playgroud)
您的代码中没有循环
条件(num < 0 && num > 0)始终为假。数字不能是:小于零且大于零
错误呼叫scanf
您可能想要:
printf("Give me a number \n");
if (scanf("%d", &num) != 1) exit(1);
while(num != 0){
total = total + num;
i = i + 1;
printf("Give me a number \n");
if (scanf("%d", &num) != 1) exit(1);
}
Run Code Online (Sandbox Code Playgroud)
如果用户输入非整数,例如字母,上述解决方案将退出程序。
将结束非整数输入循环的另一种解决方案是:
printf("Give me a number \n");
while(scanf("%d", &num) == 1 && num != 0){
total = total + num;
i = i + 1;
printf("Give me a number \n");
}
Run Code Online (Sandbox Code Playgroud)
最后一个解决方案甚至可以写得更紧凑一些 - 例如:
while(printf("Give me a number \n"), scanf("%d", &num) == 1 && num != 0){
total = total + num;
i = i + 1;
}
Run Code Online (Sandbox Code Playgroud)
阅读起来有点困难,但避免了重复的行。