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