用C中的for循环对值列表求和

用C中的for循环对值列表求和,c,for-loop,C,For Loop,C新手,我需要一些指导。我理解为什么我的代码输出的是“55”而不是“40”;但我不知道如何解决这个问题。有什么建议吗?列出的一些变量是过时的,只是为了进行实验。只是澄清一下,下限/上限只是该范围的最小值/最大值 #include<stdio.h> #include<stdlib.h> int sum = 0; int main() { int n = 10; int m = 2; int i, x; int upper; int

C新手,我需要一些指导。我理解为什么我的代码输出的是“55”而不是“40”;但我不知道如何解决这个问题。有什么建议吗?列出的一些变量是过时的,只是为了进行实验。只是澄清一下,下限/上限只是该范围的最小值/最大值

#include<stdio.h>
#include<stdlib.h>

int sum = 0;
int main() {
    int n = 10;
    int m = 2;
    int i, x;
    int upper;
    int lower;
    int lower1[100];
    int upper1[100];
    int sum_p =0;

    for (i = 1; i <= m; i++) {
        lower = 1 + (i - 1) * (n / m);
        lower1[i] = lower;
        upper = i * (n / m);
        upper1[i] = upper;

        if (i == m) {
            upper = n;
            upper1[i] = upper;
        }
        else {
            upper = i * (n / m);
            upper1[i] = upper;
        }
    }

   for (i = 1; i <= n; ++i) {
       sum += i;
   }

   printf("The total sum is: %d\n",sum);

   for (i = 1; i <= m; i++) {
       printf("Range is %d to %d\n", lower1[i], upper1[i]);

       for(x = lower1[i]; x <= upper1[i]; ++x)
           sum_p += x;

       printf("Sum:%d\n",sum_p);
   }
}

我期望的输出是:

The total sum is: 55
Range is 1 to 5
Sum: 15
Range is 6 to 10 /*6+7+8+9+10*/
Sum: 40

sum\u p
不会在两个案例之间重置为零。

sum\u p
不会在两个案例之间重置为零。

您缺少了一些明显的信息,例如所引用数组的定义和内容。请道歉!我现在就发布我的全部代码@EricPostphil刚刚使用了在迭代之间将sum_p重置为零的方法。成功了。真不敢相信我居然没想到。谢谢你的帮助/耐心!请记住,在C数组中,索引从0开始,而不是从1开始。在这个特定的代码段中,这可能不是问题,但它通常是一个已知的bug源。您缺少一些明显的信息,例如您要引用的数组的定义和内容!我现在就发布我的全部代码@EricPostphil刚刚使用了在迭代之间将sum_p重置为零的方法。成功了。真不敢相信我居然没想到。谢谢你的帮助/耐心!请记住,在C数组中,索引从0开始,而不是从1开始。在这个特定的代码段中,这可能不是问题,但它通常是已知的bug源。
The total sum is: 55
Range is 1 to 5
Sum: 15
Range is 6 to 10 /*6+7+8+9+10*/
Sum: 40