VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 489|回复: 5

[求助] c中输出100-200的素数,结果错误,请问是怎么回事

[复制链接]
05_avatar_middle
在线会员 756612440 发表于 2017-10-21 08:34:13 | 显示全部楼层 |阅读模式
3驿站币
源程序:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b;
    printf("100-200的素数有:");
    a=99;
    b=2;
L2: a=a+1;
L1: if(a%b==0) goto L2;
        else b=b+1;
     if(b<=a/2) goto L1;
     printf("%d.",a);
     if(a<200) goto L2;
     return 0;
}
捕获.PNG

最佳答案

查看完整内容

先说下这种利用 goto 的方式来实现循环确实很少这么用,也不建议这么使用!如果单纯为了练习 goto 语句还可以!真正写程序的时候千万别这么用。 问题的原因在于回到 L2 进行 a=a+1 操作之后,b 的值没有回归2,还是之前的值,所以在 L2: a = a + 1; 的后面加上一条:b = 2; 就可以了! 代码如下: 或者干脆把 L2 的位置上移一行:




上一篇:有谁搞个win7下设置IP信息的
下一篇:error: invalid operands to ...

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-10-21 08:34:14 | 显示全部楼层
先说下这种利用 goto 的方式来实现循环确实很少这么用,也不建议这么使用!如果单纯为了练习 goto 语句还可以!真正写程序的时候千万别这么用。

问题的原因在于回到 L2 进行 a=a+1 操作之后,b 的值没有回归2,还是之前的值,所以在 L2: a = a + 1; 的后面加上一条:b = 2; 就可以了!

代码如下:
  1.         int a, b;
  2.         printf("100-200的素数有:");
  3.         a = 99;
  4.         b = 2;
  5. L2: a = a + 1;
  6.         b = 2;
  7. L1: if (a%b == 0) goto L2;
  8.         else b = b + 1;
  9.         if (b <= a / 2) goto L1;
  10.         printf("%d.\n", a);
  11.         if (a < 200) goto L2;
  12.         return 0;
复制代码


或者干脆把 L2 的位置上移一行:
  1.         int a, b;
  2.         printf("100-200的素数有:");
  3.         a = 99;
  4. L2: b = 2;
  5.         a = a + 1;
  6. L1: if (a%b == 0) goto L2;
  7.         else b = b + 1;
  8.         if (b <= a / 2) goto L1;
  9.         printf("%d.\n", a);
  10.         if (a < 200) goto L2;
  11.         return 0;
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

05_avatar_middle
ico_lz  楼主| 756612440 发表于 2017-10-22 22:42:53 | 显示全部楼层
Syc 发表于 2017-10-21 08:34
先说下这种利用 goto 的方式来实现循环确实很少这么用,也不建议这么使用!如果单纯为了练习 goto 语句还可 ...

你好,请问不要用goto的原因是什么?还有什么其他高效的方法吗?求教

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

05_avatar_middle
ico_lz  楼主| 756612440 发表于 2017-10-22 22:44:41 | 显示全部楼层
Syc 发表于 2017-10-21 08:34
先说下这种利用 goto 的方式来实现循环确实很少这么用,也不建议这么使用!如果单纯为了练习 goto 语句还可 ...

还有,为什么输出会有201??

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2017-10-22 23:52:54 | 显示全部楼层
756612440 发表于 2017-10-22 22:42
你好,请问不要用goto的原因是什么?还有什么其他高效的方法吗?求教

各种 for、while 循环之类的都能解决这个小问题,为什么一定要用 goto 呢?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

05_avatar_middle
ico_lz  楼主| 756612440 发表于 2017-10-23 08:20:09 | 显示全部楼层
Syc 发表于 2017-10-22 23:52
各种 for、while 循环之类的都能解决这个小问题,为什么一定要用 goto 呢?

能否写一个给我参考一下,我的循环还没看,只是知道一些皮毛而已

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-22 19:13

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表