添加数字直到遇到负数

时间:2013-11-09 23:00:35

标签: c

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

2 个答案:

答案 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()应该如他所指出的那样。