c语言程序问题能帮看看吗

c语言初学者
编写一个程序 将输入的数字加起来
例子:

`How many numbers: 3
-3
4
13
The sum is: 14

How many numbers: 5
-2
-1
0
1
2
The sum is: 0

这是我的代码:
不知道哪里有什么问题

#include<stdio.h>
#define m 100

int main() {
    int i;
    int num[m];
    int a;
    int sum=0;
    
    printf("How many numbers: ");
    scanf("%d", &a);
    for(i=0;i < a;i++) {
    scanf("%d", &num[i]);
 
    i=0;
    while(i<a) {
    i++;
    sum=sum+num[i];
    printf("The sum is: %d\n", sum);
}
}
    return 0;
 }

怎么说呢,你这代码写的思路有点混乱,这种题目首先要想办法把输入的数字通过for循环装到数组里,之后再for循环遍历逐一相加。我修改了一下为

#include<stdio.h>
#define m 100

int main() {
    int i;
    int num[m];
    int a;
    int sum = 0;

    printf("How many numbers: ");
    scanf("%d", &a);
    for (i = 0; i < a; i++) {
        scanf("%d", &num[i]);
    }
    for (i = 0;i<a;i++) {
        sum += num[i];
    }
    printf("The sum is: %d\n", sum);
    return 0;
}

#include<stdio.h>
#define m 100
 
int main() {
    int i;
    int num[m];
    int a;
    int sum=0;
    
    printf("How many numbers: ");
    scanf("%d", &a);
    for(i=0;i < a;i++) 
    {
        scanf("%d", &num[i]); 
          sum=sum+num[i];
    }
    printf("The sum is: %d\n", sum);
    return 0;
 }
 

不如直接在输入的时候计算,上面一种算法while循环内部还没有输入完成具体的几个数字,就开始计算肯定会出错的

修改如下,供参考:

#include<stdio.h>
#define m 100
int main() {
    int i;
    int num[m] = {0};   //修改
    int a;
    int sum = 0;

    printf("How many numbers: ");
    scanf("%d", &a);
    for (i = 0; i < a; i++) {
        scanf("%d", &num[i]);
         // i = 0;
         // while (i < a) {
         //    i++;
        sum = sum + num[i];
        //}
    }
    printf("The sum is: %d\n", sum);
    return 0;
}

1、先i++,就从num[1]开始了。少了第一个数。
2、printf sum 应放循环外

while(i<a) {
sum=sum+num[i];
i++;
}
printf("The sum is: %d\n", sum);

必须所有的数都输入完再求和。

这种是最简单的实现方法,每输入一个数据就把这个数据加起来,输入结束就同步得到结果了。
#include<stdio.h>
#define m 100
int main()
{
int i;
int num[m] = {0};
int a;
int sum = 0;
printf("How many numbers: ");
scanf("%d", &a);
for (i = 0; i < a; i++)
{
scanf("%d", &num[i]);
sum = sum + num[i];
}
printf("The sum is: %d\n", sum);
return 0;
}