C 中的嵌套 for 循环

Nested for loops in C

我正在尝试完成讲师设置的任务,我有以下代码:

#include <stdio.h>

#define N 100

int main(void)
{
  int i, a, cnt = 1;

for (a = 1; a < 6; a++){
  for (i = 0; i < N; i++, cnt++) {
    if (a%2 > 0){
      a = 3*a + 1;
    }
    else{
      a = (a/2);
    }
    printf("%3d\n", a);
    if (a == 1){
      printf("Count: %d\n", cnt);
      return 0;
    }
  }
}
return 0;
}

这段代码的重点是 运行 每个整数 a 上的冰雹序列。现在我让它从 a = 1 开始,然后将 1 加到 a,然后 运行 再次调整序列直到 a = 5。

此代码 运行 将它作为 a 的初始值,但不会再将 a 加一到 运行 它。实在看不出来为什么又不做外循环了,求助!

一个冰雹序列就是取序列中它前面的整数,如果这个整数是奇数它计算3*a+1,如果这个整数是偶数它计算a/2。我已经告诉序列在 a = 1 时停止。

提前致谢!!

我也是学生,但尝试删除第一个 "return 0;",我认为这就是提前结束代码的原因。

而不是return0;在第二个循环中添加中断;移出内循环并继续外循环。

如果您不想添加中断,这是另一种方法,您的代码中有一些细微的变化,我在下面突出显示了这些变化。

1. You will have to reinititlize cnt for every new value of a.
2. You will have to take a new variable instead of a for calculations
3. For moving out of loop you can increase value of i.

#include<stdio.h>
int main()
{
int i, a, cnt=1, b;

for(a=1; a<6; a++){
    cnt = 1;
    b = a;
    for(i=0; i<100; i++, cnt++){
        if(b%2 > 0){
            b = 3*b + 1;
        }
        else{
            b = b/2;
        }

        printf("%d ", b);
        if(b==1){
            printf("\nCount %d\n", cnt);
            i = 100;
        }
    }
}
return 0;
}

return 将结束函数。我想你要找的是 break