| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1368 人关注过本帖
标题:[讨论] 请Workhard帮忙看这个程序(goto问题)
只看楼主 加入收藏
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
 问题点数:0 回复次数:14 
[讨论] 请Workhard帮忙看这个程序(goto问题)
判断输入的数字是否是素数(素数就是不能被2到N-1中的任何一个数整除),现有个问题: if(i<n) printf("%d不是素数\n",n); else printf("%d 是素数\n",n); 这两行看不懂,i肯定是小于n的嘛,那相当于if(i<n)==if(1)就是成立了吧,但若我用if(1)代替if(i<n),却不行。请高手帮我解释这个程序,谢谢! #include<stdio.h> main() { int n,i; scanf("%d",&n); for(i=2; i<n;i++) if (n%i==0) break; if(i<n) printf("%d不是素数\n",n); else printf("%d 是素数\n",n); getch(); }

[此贴子已经被作者于2005-1-6 10:17:19编辑过]

搜索更多相关主题的帖子: goto Workhard 
2005-01-05 11:13
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 
这个判断是在for循环之后判断的,如果n是素数,则i==n,否则i&lt;n;所以可以如此判断

2005-01-05 13:53
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
终于理解了其中的奥秘了,真的很谢谢workhard。大家要向workhard学习阿!(就是当n是素数时,经过for语句后,i==n。若不过素数,则当i&lt;n时就已经break了,所以i一定小于n)。另用if(i&gt;=n)或if(i==n)来代替else,则程序也能正常,我想这样的话,就让我这被学者更易懂了。
2005-01-05 14:43
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 

虽然素数是一定要大于2的,但我想若有人不知,老是输入小于3的值,那要什么提示他,我现补充这个程序,但不能正确运行,请再帮忙。 #include<stdio.h> main() { int n,i; Tscanf("%d",&n); if(n<=2) {printf("This is number is fault,Please input another number:"); goto To; } scanf("%d",&n); for(i=2; i<n;i++) if (n%i==0) break; if(i<n) printf("%d not zhushu \n",n); else printf("%d is zhushu \n",n); getch(); }

就是当输入大于2时,为何没有反应呢?

[此贴子已经被作者于2005-1-5 16:12:40编辑过]

2005-01-05 15:12
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
你想 goto 到那里去?好好看看

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-01-05 16:01
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
不知为何,不能正常显示。请你把Tscanf("%d",&n);看成 To:scanf("%d",&n);请再试一下,谢谢!
2005-01-05 16:22
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
这么多人浏览,为何就没人能留个话(除了workhard),解释一下。请问我的goto语句是否有问题,希望你们这些高手能予帮助,谢谢!另请workhard能否详细点,这好像是你的一概风格吧!
2005-01-06 10:16
ydr206
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-10-12
收藏
得分:0 
“goto To; }”
这里这个“TO”函数是怎么来得呀?你怎么没有定义呀??
没有定义当然会出错了!
2005-01-06 12:38
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 

#include<stdio.h> void main() { int n,i; printf("please input a number:"); T scanf("%d",&n); if(n<=2) {printf("This is number is fault,Please input another number:"); goto To; } for(i=2; i<n;i++) if (n%i==0) break; if(i<n) printf("%d not sushu \n",n); else printf("%d is sushu \n",n); getch(); }

现在好了,goto To以后就执行输入了,下面没有必要在输入。

我这几天忙着学opnet,好久没来了,共同进步吧。


2005-01-06 15:24
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 

#include<stdio.h> void main() { int n,i; printf("please input a number:"); scanf("%d",&n); while (n<=2) { printf("This is number is fault,Please input another number:"); scanf("%d",&n); } for(i=2; i<n;i++) if (n%i==0) break; if(i<n) printf("%d not sushu \n",n); else printf("%d is sushu \n",n); getch(); }

一般不推荐使用goto语句,我写了一个while()来代替。


2005-01-06 15:29
快速回复:[讨论] 请Workhard帮忙看这个程序(goto问题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017718 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved