分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Taufik Nurhidayat

阵列输入未扫描/丢失 - input for array not scanned/missing

  •  0
  • Taufik Nurhidayat  · 技术社区  · 7 月前

    输入: 八 (2 5 6 9 10 2 7 4) 预期输出: (2 7 9 9 12 5 7 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 回复  |  直到 7 月前
        1
  •  1
  •   Tim Randall    7 月前

    这里有一个问题:

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

    你的数组 a_u a_s 长度可变。可变长度数组不一定是标准的C(您可能需要至少一个C99编译器来利用这个特性)。但现在让我们假设编译器确实支持它。

    更重要的是,你已经使用了 a ,即0,作为这些数组的大小。

    这意味着 任何 代码访问 阿苏 阿斯 将展出 未定义的行为 .

        2
  •  0
  •   Mr. Weirdo    7 月前

    看看你的阵列。在第4行,您定义的2个数组, 阿苏 阿斯 会有 “0” 尺寸这不是一件明智的事情。这将进一步导致未定义的行为,导致执行过程中的变化。我不明白这种声明的意义。