读取输入不会完全填充双数组

时间:2017-11-16 21:50:45

标签: c arrays double

我正在尝试编写一个程序来读取存储在2个不同阵列中的双打,添加它们并打印出添加在一起的2个阵列。我正在尝试测试我的代码但是当我填充数组时,打印显示我在第一个索引传递后没有填充数组。

#include <stdio.h>

int main() {
    double arrayA[5];
    double arrayB[5];
    double arrayC[5];

    printf("Enter 5 doubles for array A\n");
    for (int i = 0; i < 5; i ++) {
        scanf("%lf", arrayA);
        printf("%lf\n", arrayA[i]);
    }
    printf("Enter 5 doubles for array B\n");
    for (int i = 0; i < 5; i ++) {
        scanf("%lf", arrayB);
        printf("%lf\n", arrayB[i]);
    }

    printf("Here are the two arrays added together\n");
    for (int i = 0; i < 5; i ++) {
        arrayC[i] = arrayA[i] + arrayB[i];
    }

    for (int i = 0; i < 5; i ++) {
        //printf("%lf\n", arrayA[i]);
        //printf("%lf\n", arrayB[i]);
        printf("%lf\n", arrayC[i]);
    }


}

这是我在第一个数组

的控制台中获得的输出
Enter 5 doubles for array A
1
1
1.000000
2
2
0.000000
3
3
0.000000
4
4
0.000000
5
5
0.000000

1 个答案:

答案 0 :(得分:1)

scanf("%lf", arrayA)始终会读入arrayA的第一个元素,而 printf("%lf\n", arrayA[i])打印i个元素。因此,您正在访问数组的未初始化部分,这会产生未定义的行为。使用scanf("%lf", &arrayA[i])(等同于arrayB)。