输入: 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]);
}
}
答案 0 :(得分:1)
这里有个问题:
int a = 0, b = 0, c = 0, a_u[a], a_s[a];
您的数组a_u
和a_s
的长度是可变的。可变长度数组不一定是标准C语言(您可能至少需要C99编译器才能利用该功能)。但是,现在让我们假设您的编译器确实支持它。
更重要的是,您使用a
的值(即0)作为这些数组的大小。
这意味着访问a_u
或a_s
的任何代码将显示未定义的行为。
答案 1 :(得分:0)
看看您的阵列。在第4行,您定义的2个数组 a_u 和 a_s 的大小为“ 0” ,这并不明智。 。这将进一步导致未定义的行为,从而导致执行变化。我不明白这种声明的意义。