C语言,求大神指教

这个程序的功能是:输入一个整数以空格确定,输出它是不是素数,可以继续输入,只要以空格确定,就能一直判断,直到以回车确定为止,但是运行结果一直不对,求指教#include<... 这个程序的功能是:输入一个整数以空格确定,输出它是不是素数,可以继续输入,只要以空格确定,就能一直判断,直到以回车确定为止,但是运行结果一直不对,求指教
#include <stdio.h>
#include <math.h>
int ss(int n)
{int i,x;
for(i=2;i<=sqrt(n);i++)
{if(n%i==0)
{x=0;
break;
}
else
x=1;
}
return x;
}
main()
{int a,b;
char c;
for(;;)
{scanf("%d",&a);
c=getchar();
b=ss(a);
if(c!='\n')
{if(b)
printf("是素数");
else
printf("不是");
}
else
break;
}
}
展开
 我来答
t君凡
2014-03-30 · 超过23用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:48.3万
展开全部
#include <stdio.h>
#include <math.h>
int ss(int n)
{int i,x=1;
for(i=2;i<=sqrt(n);i++)
{if(n%i==0)
{x=0;
break;
}
else
x=1;
}
return x;
}
main()
{int a,b;
char c;
for(;;)
{scanf("%d",&a);
printf("\n%d",a);
c=getchar();
b=ss(a);
if(c!='\n')
{if(b)
printf("是素数");
else
printf("不是");
}
else
break;
}
}

要判断最后一个数时要嗯空格后回车
更多追问追答
追问
我懂了,我的程序貌似没有多大问题,不过你错了一点,自定义函数时,X应该初始化为0,不然会误把2当成质数。
不过初始化为0的话,又会误把3当成非质数,所以干脆不用sqrt(),让系统多算几步算了
944150797
2014-03-30 · TA获得超过140个赞
知道答主
回答量:32
采纳率:0%
帮助的人:24.2万
展开全部
问题好像不少……

首先,你的ss函数中的x缺少初值,这样在n=3的时候会出bug,返回随机数
其次,你在发现一个数输入完后出现了回车就立刻break了,这样最后输入的一个数就没有被处理

最后,一个不算问题的东西吧,主要是习惯,printf的时候加上回车(”\n“)或者空格(" ")。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0f37b28
2014-03-30 · TA获得超过225个赞
知道小有建树答主
回答量:107
采纳率:100%
帮助的人:79.4万
展开全部
你这个程序将无法判断2是素数,注意这一行for(i=2;i<=sqrt(n);i++),当n为2时,显然进入不了循环,那么x就无法为1,也就判断不了其为素数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式