阵列输入未扫描/丢失

时间:2018-12-05 16:34:32

标签: c arrays scanf

输入: 8 (2 5 6 9 10 2 7 4) 预期产量: (2 7 9 9 12 5 5 6) 实际输出:(2 7 9 9)

这是我的大学任务,也是我第一次在这里问。 我不知道为什么,但是没有扫描10条帮助吗?

#include <stdio.h>
int main ()
{
int a = 0, b = 0, c = 0, a_u[a], a_s[a];
printf("jumlah inputan : ");
scanf("%d", &a);

printf("\nmasukkan bilangan : ");

for(b = 0; b < a; b++) {
    scanf("%d", &a_u[b]);
}

printf ("\n");
for(b = 0; b < a; b++) {
    if (b % 3 == 0){
        a_s[b] = a_u[b];
    }
    else if (b % 3 == 1){
        a_s[b] = a_u[b] + 2;
    }
    else if (b % 3 == 2) {
        a_s[b] = a_u[b] + 3;
    }
}

for(b = 0; b < a; b++) {
    printf("%d ", a_s[b]);
}
}

2 个答案:

答案 0 :(得分:1)

这里有个问题:

int a = 0, b = 0, c = 0, a_u[a], a_s[a];

您的数组a_ua_s的长度是可变的。可变长度数组不一定是标准C语言(您可能至少需要C99编译器才能利用该功能)。但是,现在让我们假设您的编译器确实支持它。

更重要的是,您使用a的值(即0)作为这些数组的大小。

这意味着访问a_ua_s任何代码将显示未定义的行为

答案 1 :(得分:0)

看看您的阵列。在第4行,您定义的2个数组 a_u a_s 的大小为“ 0” ,这并不明智。 。这将进一步导致未定义的行为,从而导致执行变化。我不明白这种声明的意义。