当前位置: 代码迷 >> C语言 >> [讨论] 请Workhard帮忙看这个程序(goto问题)
  详细解决方案

[讨论] 请Workhard帮忙看这个程序(goto问题)

热度:351   发布时间:2005-01-05 11:13:00.0
[讨论] 请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  

----------------解决方案--------------------------------------------------------
这个判断是在for循环之后判断的,如果n是素数,则i==n,否则i&lt;n;所以可以如此判断
----------------解决方案--------------------------------------------------------
终于理解了其中的奥秘了,真的很谢谢workhard。大家要向workhard学习阿!(就是当n是素数时,经过for语句后,i==n。若不过素数,则当i&lt;n时就已经break了,所以i一定小于n)。另用if(i&gt;=n)或if(i==n)来代替else,则程序也能正常,我想这样的话,就让我这被学者更易懂了。
----------------解决方案--------------------------------------------------------

虽然素数是一定要大于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编辑过]


----------------解决方案--------------------------------------------------------
你想 goto 到那里去?好好看看
----------------解决方案--------------------------------------------------------
不知为何,不能正常显示。请你把Tscanf("%d",&n);看成 To:scanf("%d",&n);请再试一下,谢谢!
----------------解决方案--------------------------------------------------------
这么多人浏览,为何就没人能留个话(除了workhard),解释一下。请问我的goto语句是否有问题,希望你们这些高手能予帮助,谢谢!另请workhard能否详细点,这好像是你的一概风格吧!
----------------解决方案--------------------------------------------------------
“goto To; }”
这里这个“TO”函数是怎么来得呀?你怎么没有定义呀??
没有定义当然会出错了!
----------------解决方案--------------------------------------------------------

#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,好久没来了,共同进步吧。


----------------解决方案--------------------------------------------------------

#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()来代替。


----------------解决方案--------------------------------------------------------