|
发表于 2017-10-21 08:34:14
|
显示全部楼层
先说下这种利用 goto 的方式来实现循环确实很少这么用,也不建议这么使用!如果单纯为了练习 goto 语句还可以!真正写程序的时候千万别这么用。
问题的原因在于回到 L2 进行 a=a+1 操作之后,b 的值没有回归2,还是之前的值,所以在 L2: a = a + 1; 的后面加上一条:b = 2; 就可以了!
代码如下:
- int a, b;
- printf("100-200的素数有:");
- a = 99;
- b = 2;
- L2: a = a + 1;
- b = 2;
- L1: if (a%b == 0) goto L2;
- else b = b + 1;
- if (b <= a / 2) goto L1;
- printf("%d.\n", a);
- if (a < 200) goto L2;
- return 0;
复制代码
或者干脆把 L2 的位置上移一行:
- int a, b;
- printf("100-200的素数有:");
- a = 99;
- L2: b = 2;
- a = a + 1;
- L1: if (a%b == 0) goto L2;
- else b = b + 1;
- if (b <= a / 2) goto L1;
- printf("%d.\n", a);
- if (a < 200) goto L2;
- return 0;
复制代码 |
|