c语言关于if语句和break语句的问题

这题是输入一个数,判断是否是素数main(){intm,i,k;scanf("%d",&m);//输入的数赋给mk=sqrt(m);//求m的平方根,赋给kfor(i=2... 这题是输入一个数,判断是否是素数

main()
{
int m,i,k;
scanf("%d",&m); //输入的数赋给m
k=sqrt(m); //求m的平方根,赋给k
for(i=2;i<=k;i++) //从2到m的平方根,依次检验能否被m整除
if(m%i==0)
break;
if(i>=k+1)
printf("%d is a prime number\n",m);
else
printf("%d is not a prime number\n",m);
}

这是函数的主体部分,从for语句开始就有点看不明白了
两个疑问:
1,函数中有两个if,一个else,应该是属于嵌套的,那个else是跟后边的if是一对还是跟前边的if是一对?
2,break语句是强制跳出循环,可是这个语句我看了之后觉得应该是跳出if语句,从而执行下一个for循环。。。可是从输出结果上看来,它是跳转到else语句中了,从而输出“XX is not a prime number”。。。这到底是怎么回事?

最后,求关于这个循环的全部详细步骤和解释(因为我是在linux下搞的,还不会用于debug的工具,所以只好来提问了。。。)

如果能讲明白,我会追加20分
展开
 我来答
w_try
推荐于2016-10-30 · TA获得超过693个赞
知道小有建树答主
回答量:715
采纳率:0%
帮助的人:334万
展开全部
基本点就搞错了..for里面只嵌套第一个if..然后break之后不是执行下一个for.而是中断for循环..
把上面的结构写的清楚点..就是这样了...
for(i=2;i<=k;i++) //从2到m的平方根,依次检验能否被m整除
{
if(m%i==0)
break;
}
if(i>=k+1)
{
printf("%d is a prime number\n",m);
}
else
{
printf("%d is not a prime number\n",m);
}
这样应应该不会搞错结构了吧..
谷颂钟离谷菱
2019-06-15 · TA获得超过3822个赞
知道大有可为答主
回答量:3086
采纳率:35%
帮助的人:160万
展开全部
基本点就搞错了..for里面只嵌套第一个if..然后break之后不是执行下一个for.而是中断for循环..
把上面的结构写的清楚点..就是这样了...
for(i=2;i<=k;i++)
//从2到m的平方根,依次检验能否被m整除
{
if(m%i==0)
break;
}
if(i>=k+1)
{
printf("%d
is
a
prime
number\n",m);
}
else
{
printf("%d
is
not
a
prime
number\n",m);
}
这样应应该不会搞错结构了吧..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式