我正在尝试创建一个程序,让用户输入数字(最大条目数> 10 ^ 6),直到遇到否定为止。我已经尝试了很多版本,但他们要么没有注册输入负值,要么崩溃。
这是我目前所在的地方:
#include <stdio.h>
#define HIGHEST 999999
int main(){
int i=0, entry, sum=0;
while(i<HIGHEST){
scanf("%i", entry);
if(entry>0){
sum+=entry;
}
else{
i=HIGHEST;
}
i++;
}
printf("Sum: %i", sum);
system("pause");
}
答案 0 :(得分:3)
你的问题就在这一行:
scanf("%i", entry);
应该是:
scanf("%i", &entry);
您需要传入将存储扫描值的整数变量的地址。以来 条目从未初始化,它只是填充垃圾/内存中的任何内容而不是输入的值。请参阅此reference,其中说明了
"Depending on the format string, the function may expect a sequence of additional arguments,
each containing a pointer to allocated storage where the interpretation of the extracted
characters is stored with the appropriate type"
答案 1 :(得分:0)
如果输入的数字太大,您可以提供离开方式:
while(i<HIGHEST){
但是如果小于0则不得离开;试试这个:
while((i<HIGHEST)&&(i>=0)){
此外,@ OldProgrammer是正确的,你的scanf()
应该如他所指出的那样。