c - C 中的嵌套 for 循环

标签 c loops for-loop nested sequence

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

#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 就停止。

提前致谢!!

最佳答案

而不是返回0;在第二个循环中添加break;移出内循环并继续外循环。

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

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;
}

关于c - C 中的嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054299/

相关文章:

java - IndexOutOfBoundsException - 只是有时?

java - 我通过平方实现指数有什么问题吗?

ruby - 如何循环计数?

Python - 如何从文本中打印出一行

c - 将 for 循环中的每个结果作为表格打印出来,并显示每次迭代和结果

java - 确定数组中特定元素的总和

C:尽管忽略初始化和增量表达式,For 循环仍在执行,因此始终为 true

c - 使用设备树引导主线 Linux 内核

c - 赋值原因不明确会丢弃 volatile 限定符

c++ - 警告 : control reaches end of non-void function [-Wreturn-type]