循环遍历数组时,C程序无法正确添加

时间:2016-09-01 01:58:03

标签: c

我试图使用来自" thenewboston"的教程来找到5个数字的总和(使用C语言)。在YouTube上。我的代码是:

int main(int argc, char *argv[]) {
    int a, b, c, d, e;
    int array[5]={a, b, c, d, e};
    int sum=0;
    int i;
    int j;

    printf("Enter your 5 numbers: ");
    scanf("%d, %d, %d, %d, %d", &a, &b, &c, &d, &e);

    for (i = 0; i < 5; i++){
        sum+=array[i];
    }

    printf("The sum of 5 numbers is:%d",sum);
    return 0;
}

但奇怪的是,无论我输入的是什么5个数字,我总是得到48。

2 个答案:

答案 0 :(得分:1)

丢弃变量a, b, c, d, earray保持不变,反之亦然

删除第一个printf上的变量:

print("Enter 5 numbers: ");

不使用变量时不要放置变量。

当您将scanf设为scanf("%d, %d", &var1, &var2);时,您还必须输入与

相同的格式
Enter 5 numbers: 10, 20

工作示例(对数组更有效):

int main() {
    int input[5];
    int sum;

    printf("Enter 5 numbers: ");
    scanf("%d, %d, %d, %d, %d", &input[0], &input[1], &input[2], &input[3], &input[4]);

    int i;
    for (i = 0; i < 5; i++) {
        sum += input[i];
    }

    printf("The sum is %d", sum);
    return 0;
}

答案 1 :(得分:0)

您不能将abcde存储到数组array中。读完后,需要将它们存储在数组中。

您的array声明不会创建指向变量的指针数组 - 它会创建一个指向五个整数字段的连续块的单个指针。您只需使用a等地址即可更新这些数组字段,因为您的数组并未指向它们。

将它们存储在数组中的最明显,最清晰,最简单的方法是(我推荐):

array[0]=a;
array[1]=b;
array[2]=c;
array[3]=d;
array[4]=e;

for循环开始之前执行此操作。