永发信息网

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

答案:6  悬赏:70  手机版
解决时间 2021-04-24 09:21

#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语句,接了之后程序运行的结果就错了!去掉就正常了!!

请高手帮忙解答一下!!

谢谢了!

最佳答案


明白你的意思


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


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


满意请点五星 谢谢..

全部回答

你的程序没有问题

我运行过了

你用的是什么编译器

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

for(n=2;n<a;n++)

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

else return 1; }

这样就得了。

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

return 0;

else

return 1;

} }

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

isprime中的if语句的后面接else没问题。但是要注意if语言是在for循环中的。

如果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; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
晕,咋办?
www.16px.n 跟dy.16px.com.cn的关系
我电脑玩不到DNF游戏,进入游戏时后出现。错
石排村地址在哪,我要去那里办事
丐帮八十技能叫什么
江门市华日集团生产的摩托咋样?
喝啤酒对身体有害吗
四字词语带意思,六上下词语盘点带拼音及四字
万网的网站是多少?
美发行业赚钱吗?
第一烩面馆地址在哪,我要去那里办事
请问什么歌曲最恐怖?越恐怖越好
谁知道西湖的水从哪里来?
2010年女生流行什么发型?
有时上网的时候经常有些无聊网页弹出来遮住了
推荐资讯
火箭没有姚明了吗
换个2.5的空调电容要多少钱
北京哪个地方有做的好的造型师?
屏保多长时间换一次最好
怎么把主题下载在手机的内存卡上?
请问什么网络3D游戏好玩?不收费的?而且还不
小朱为什么不能参加世锦赛?是因为手指伤定有
“网瘾儿子热死”其过在谁?
谁会做藏头诗?帮我做一首藏头诗!
局域网共享打印机问题?
军山大桥地址有知道的么?有点事想过去
安涛爱郭文娜,难道有错吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?