【问题标题】:indexNumber in for-loop does not increasefor循环中的indexNumber不增加
【发布时间】:2020-04-09 00:43:23
【问题描述】:

我知道如果 if 条件错误 if case 不会被执行,但 for 循环仍会继续。但不知何故,我被这个简单的问题困住了。

int divisorA[20]={0},indexA=0,a=42;

    for (int i =1;i<a+1;++i){
        if (a % i == 0){
            divisorA[indexA] = i;
            ++indexA;
            printf("%d %d\n",divisorA[indexA],indexA);
        }

   }

输出

0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8

想要的

1 1
2 2
3 3
6 4
7 5
14 6
21 7
42 8

【问题讨论】:

  • 你正在打印divisorA[indexA]你增加了indexA,所以你正在访问数组中的下一个元素(你已经初始化为0)
  • 你增加indexA 之前你打印并因此读取尚未设置的数组成员。
  • 换行++indexA;printf("%d %d\n",divisorA[indexA],indexA);
  • 哦,那是愚蠢的错误。

标签: c for-loop if-statement


【解决方案1】:

一个简单的,你正在打印索引数组值/之后/你已经增加了索引,所以它会提示下一个未填充的插槽,一个零。

【讨论】:

    【解决方案2】:

    你一开始增加了索引,然后才在尚未设置的索引位置输出数组元素。

            ++indexA;
            printf("%d %d\n",divisorA[indexA],indexA);
    

            ++indexA;
            printf("%d %d\n",divisorA[indexA-1],indexA);
    

    注意 C 中的索引是从 0 开始的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2022-01-10
      相关资源
      最近更新 更多