3

我正在尝试创建一个程序,让用户输入数字(最大条目> 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");
}
4

2 回答 2

3

您的问题出在这一行:

scanf("%i", entry);

应该是:

scanf("%i", &entry);

您需要传入将存储扫描值的整数变量的地址。由于条目从未初始化,它只是填充了垃圾/内存中的任何内容,而不是输入的值。请参阅此参考资料,其中指出,

  "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"
于 2013-11-09T23:05:12.377 回答
0

如果输入的数字太大,您可以提供一种离开方式:

while(i<HIGHEST){  

但如果它小于 0,则什么也不会留下;尝试这个:

while((i<HIGHEST)&&(i>=0)){  

此外,@OldProgrammer 是正确的,你scanf()应该像他指出的那样。

于 2013-11-09T23:06:18.150 回答