C语言goto语句
#include <stdio.h>int main()
{
int i, j, n, cubed, sum = 0;
printf("请输入一个整数:");
scanf("%d", &n);
cubed = n * n * n;
for (i = 1; i < cubed; i += 2)
{
for (j = i; j < cubed; j += 2)
{
sum += j;
if (sum == cubed)
{
if (j - i > 4)
{
printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
}
else
{
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
}
goto FINDIT;
}
if (sum > cubed)
{
sum = 0;
break;
}
}
}
FINDIT:
return 0;
}
这里goto语句是为了强行跳出最外层循环吗?
能用break语句实现吗,小甲鱼说尽量少使用goto语句
会降低程序的可读性 可以用break;但是break只能跳出一层for循环 村里小黑 发表于 2021-11-5 16:21
可以用break;但是break只能跳出一层for循环
那就是不能使用break喽,他需要跳出i = 0的那层循环 本帖最后由 村里小黑 于 2021-11-5 17:18 编辑
林江楠 发表于 2021-11-5 16:24
那就是不能使用break喽,他需要跳出i = 0的那层循环
你的代码等价于这样#include <stdio.h>
int main()
{
int i, j, n, cubed, sum = 0;
printf("请输入一个整数:");
scanf("%d", &n);
cubed = n * n * n;
for (i = 1; i < cubed; i += 2)
{
for (j = i; j < cubed; j += 2)
{
sum += j;
if (sum == cubed)
{
if (j - i > 4)
{
printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
}
else
{
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
}
return 0;
}
if (sum > cubed)
{
sum = 0;
break;
}
}
}
return 0;
}
用break可以这样:
#include <stdio.h>
int main()
{
int i, j, n, cubed, sum = 0;
bool m =0;//做判断返回的标志
printf("请输入一个整数:");
scanf("%d", &n);
cubed = n * n * n;
for (i = 1; i < cubed; i += 2)
{
for (j = i; j < cubed; j += 2)
{
sum += j;
if (sum == cubed)
{
if (j - i > 4)
{
printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
}
else
{
printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
}
m = 1;//满足返回条件,标志位致1
break;//先跳出第一个for循环
}
if (sum > cubed)
{
sum = 0;
break;
}
}
if (m)//判断满足返回条件
break;
}
return 0;
} 我感觉也可以使用exit函数
页:
[1]