永发信息网

c语言一段代码的小问题...

答案:6  悬赏:70  手机版
解决时间 2021-04-24 09:21
  • 提问者网友:浩歌待明月
  • 2021-04-23 13:29

#include "math.h"


int isprime(int a)
{int n;
for(n=2;n<a;n++)


if(a%n==0) return 0;

return 1;
}


int main(void)
{int a;
scanf("%d",&a);
if(isprime(a)) printf("YES");
else printf("NO");
getch();
return 0;
}

为什么在被调用函数 isprime中的if语句的后面不能接else语句,接了之后程序运行的结果就错了!去掉就正常了!!

请高手帮忙解答一下!!

谢谢了!

最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-04-23 14:08


明白你的意思


程序是没有问题的,可是逻辑就有问题


按你的思路走,不管怎么样 for语句只循环一次就返回了。所以不管哪个数进入for循环 执行了一次就返回了,这时候 能被2除尽的数就不是素数,否则就是素数了。所以就出现了9是素数的情况。明白了吗?


满意请点五星 谢谢..

全部回答
  • 1楼网友:野味小生
  • 2021-04-23 17:42

你的程序没有问题

我运行过了

你用的是什么编译器

我用、VC运行过了是正确的

  • 2楼网友:第幾種人
  • 2021-04-23 17:15
for(n=2;n<a;n++)

{ if(a%n==0) return 0;

else return 1; }

这样就得了。

  • 3楼网友:傲气稳了全场
  • 2021-04-23 16:19

int isprime(int a) {int n; for(n=2;n<a;n++){ if(a%n==0)

return 0;

else

return 1;

} }

一定要养成写大括号的习惯,特别是for, while等循环语句, 要不自己写出来的东西连自己都看不懂

  • 4楼网友:狂恋
  • 2021-04-23 16:13
isprime中的if语句的后面接else没问题。但是要注意if语言是在for循环中的。
  • 5楼网友:行路难
  • 2021-04-23 15:10

如果if 后面接了else语句. 那么在else return 1;后面还必须在return一次. 否则编译器会判断该函数没有返回.

如:

int isprime(int a) {int n; for(n=2;n<a;n++)

if(a%n==0) return 0;

else return 1;

return 1; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯