我正在尝试编写一个程序来读取存储在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
答案 0 :(得分:1)
scanf("%lf", arrayA)
始终会读入arrayA
的第一个元素,而
printf("%lf\n", arrayA[i])
打印i
个元素。因此,您正在访问数组的未初始化部分,这会产生未定义的行为。使用scanf("%lf", &arrayA[i])
(等同于arrayB
)。