有关C语言数组的疑问,求解惑

img


运行结果是12345,我自己演算只能出来12344,不晓得错哪了,有谁能列举一下每次循环后数组变成什么,让我看看我哪里出问题了

  • i = 0, n = 0, i < 10, c = a[0] = 1
    • j = 1, j < 10, a[j]=a[1]=2, 2==1 不成立
    • j = 2, j < 10, a[j]=a[2]=2, 2==1 不成立
    • ...
    • j = 8,j < 10, a[j]=a[8]=1, 1==1, 成立
      • k = 8, k < 10, a[8] = a[9] = 5; n++; n = 1;
        a = {1, 2, 2, 3, 4, 3, 4, 5, 5, 5}
  • i = 1, n = 1, i < 9, c = a[1] = 2
    • j = 2, j < 9, a[j]=a[2]=2, 2==2 成立
      • k = 2,k < 9; 后一位覆盖前一位; n++; n = 2;
        a = {1, 2, 3, 4, 3, 4, 5, 5, 5, 5}
  • i = 2, n = 2, i < 8, c = a[2] = 3

    • j = 3, j < 8, a[j]=a[3]=4, 4==3 不成立
    • j = 4, j < 8, a[j]=a[4]=3, 3==3 成立
      • k = 4,k < 8; 后一位覆盖前一位;n++; n = 3;
        a = {1, 2, 3, 4, 4, 5, 5, 5, 5, 5}
  • i = 3, n = 3, i < 7, c = a[3] = 4

    • j = 4, j < 7, a[j]=a[4]=4, 4==4 成立
      • k = 4, k < 7; 后一位覆盖前一位;n++; n = 4;
        a = {1, 2, 3, 4, 5, 5, 5, 5, 5, 5}
  • i = 4, n = 4, i < 6, c = a[4] = 5

    • j = 5, j < 6, a[j]=a[5]=5, 5==5 成立
      • k = 5, k < 6; 后一位覆盖前一位 n++; n = 5;
        a = {1, 2, 3, 4, 5, 5, 5, 5, 5, 5}
  • i = 5, n = 5; i < 5; 不成立,退出循环

  • 遍历从 i = 0, i<5; 输出 1 2 3 4 5

你把那个最后的输出循环的,插入到循环后面(最好把\n%d修改为 空格%d)
再输出一个\n
不就一目了然了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^