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分 展开
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分 展开
2个回答
展开全部
基本点就搞错了..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);
}
这样应应该不会搞错结构了吧..
把上面的结构写的清楚点..就是这样了...
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里面只嵌套第一个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);
}
这样应应该不会搞错结构了吧..
把上面的结构写的清楚点..就是这样了...
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);
}
这样应应该不会搞错结构了吧..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询