C编程:用户用for循环输入的数字难以相加

时间:2019-01-27 13:03:12

标签: c loops for-loop sum

因此,我必须编写一个程序来询问用户一个整数,然后该整数将确定用户在添加所有输入的数字之前要获得多少个条目。因此,如果第一个输入的整数为“ 5”,则用户可以再输入5个整数。然后将这5个整数加在一起并显示出来。我已经编写了一个带有for循环的程序,但是由于某种原因,它只添加了前4个整数而不是第5个整数。这是代码:

int main() { //declare main function

       int c=0,n,i; //declare integers
       int sum=0;

       printf("\nEnter an integer: "); //ask user for input and create a label
       scanf("%d",&n);


       if (n>=0) { //use if statement

           for (i=0;i<n;i++) //use for loop inside if statement to account for negative integers

           {
               sum+=c;
               printf("Enter an integer: ");
               scanf("%d",&c);
           }

       }

       else {

           printf("Wrong number. You can only enter positive integers!");

       }


       printf("The sum of the %d numbers entered is: %d",i,sum);

       return 0;
}

2 个答案:

答案 0 :(得分:1)

只需更改

的位置
sum+=c; 

扫描后应该可以工作。

答案 1 :(得分:0)

最好拆分程序。使用功能。并非主函数中的所有内容。

int getInteger(void)
{
    char str[100];
    int number;

    while(!fgets(str, 100, stdin) || sscanf(str, "%d", &number) != 1)
    {
        printf("Wrong input. Try again:")  ; 
    }
    return number;
}

int main()
{
    int nsamples;
    long long sum = 0;

    printf("Enter number of samples:");
    while((nsamples = getInteger()) <= 0)
    {
        printf("Try again, entered number must be >= 0\n");
    }

    printf("Enter numbers:\n");
    for(int i = 1; i <= nsamples; i++)
    {
        printf("Sample no %d:", i);
        sum += getInteger();
    }
    printf("The sim is: %lld\n", sum);
}