|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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语句
会降低程序的可读性
本帖最后由 村里小黑 于 2021-11-5 17:18 编辑
你的代码等价于这样 - #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;
- }
复制代码
|
|