我尝试完成讲师设置的任务,我有以下代码:
#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/