break到底怎么用

RANDOM_RD 2010-07-13 12:32:29
#include "stdio.h"
#include "math.h"
main()
{int m,i;
float k;
scanf("%d",&m);
k=(float)sqrt(m);
for(i=2;i<=k+1;i++)
{if(m%i==0)
{
printf("%d is not a prime number\n",m);break;
}
else
printf("%d is a prime number\n",m);
}
}
为什么执行结果是这样啊!比如输入23 会连续输出四条 23 is a prime number
...全文
298 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-07-14
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、CSDN、MSDN;
要迷信CPU、编译器、调试器。
liujiaji 2010-07-14
  • 打赏
  • 举报
回复
放在循环里面,作用是跳出循环
haopapa001 2010-07-14
  • 打赏
  • 举报
回复
你这样写,
else
printf("%d is a prime number\n",m);break;
这样就可以得到正确的答案了。
sfd1234 2010-07-14
  • 打赏
  • 举报
回复
程序是要调试的,而不是“问”!
太虚野老 2010-07-14
  • 打赏
  • 举报
回复
当运行到break;语句时退出for循环。
willabc 2010-07-14
  • 打赏
  • 举报
回复
5楼正解!
realzxm 2010-07-14
  • 打赏
  • 举报
回复
前面的讲的够详细了,仔细自己体会下
RANDOM_RD 2010-07-14
  • 打赏
  • 举报
回复
谢谢各楼,感谢大家,尤其是19L,谢谢大家
winner8080 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhao4zhong1 的回复:]

break分两种
一种是switch语句中每个case后面的
一种是for,do,while循环里面的
[/Quote]

顶一下.
Yanger_xy 2010-07-13
  • 打赏
  • 举报
回复
break跳出循环.
G_Spider 2010-07-13
  • 打赏
  • 举报
回复
在这里,当运行到break;语句时退出for循环。
比如你输入23,执行k=(float)sqrt(m);此时k约等于4.7
接着执行for循环;
i=2;因为23%2不等于0所以执行选择句23 is a prime number;
之后,i=3;23%3也不等于0,所以又是23 is a prime number;
...可见素数的话不可能使m%i==0成立。
而当输入24时,就不同了
执行一次24%2==0成立24 is not a prime number,接着执行break;退出循环
程序结束。
ameyume 2010-07-13
  • 打赏
  • 举报
回复
	int m,i;
float k;
scanf("%d",&m);
k=(float)sqrt((float)m);
for(i=2;i<=k+1;i++) // k = 4.7958317
{
if(m%i==0) // m = 23, i = 2, 3, 4, 5都不满足此条件,所以输出四次else里的内容
{
printf("%d is not a prime number\n",m);break;
}
else
printf("%d is a prime number\n",m);
}
fancanqin 2010-07-13
  • 打赏
  • 举报
回复
break的作用:
1、跳出break所在的最近的一层循环;2、跳出所在的最近一层switch结构
cao_julians 2010-07-13
  • 打赏
  • 举报
回复
求素数实际上是“一票否决”,但肯定它需要在指定范围内遍历全部除数i,当且仅当经所有除数测试--未被否决才能肯定为素数。
LZ的问题在于:一次未被否决,就输出“是素数”的信息。
如果输入值为25,就会出现输出:
25是素数(三次:除数为2,3,4)
再输出:
25不是素数(除数为5)
jldream110 2010-07-13
  • 打赏
  • 举报
回复
break跳出当前所在的循环 for,while 如果switch 就是跳出switch
漫步者、 2010-07-13
  • 打赏
  • 举报
回复
当满足了其中的一个条件的时候,就跳出循环!懂吧
Q446512799 2010-07-13
  • 打赏
  • 举报
回复
LS正解,你每次判断都会进入else语句,自然会输出
huaxiamoyun 2010-07-13
  • 打赏
  • 举报
回复
相信你会使用break
但是你的这个程序的目的是要判断所给的数字是否为素数
但你的程序编的有问题
具体体现在你的判断过程
for循环了四次自然要输出四个那个语句了

该正后
for(i=2;i<=k+1;i++) // k = 4.7958317
if(m%i!=0) // m = 23, i = 2, 3, 4, 5都不满足此条件,所以输出四次else里的内容
{
printf("%d is not a prime number\n",m);break;
}
if(i>k+1)printf("%d is a prime number\n",m);
你试试看
Luyi06292 2010-07-13
  • 打赏
  • 举报
回复
楼上分析的都很到位。 学习了。
KevinHo 2010-07-13
  • 打赏
  • 举报
回复
break的作用是:1、跳出break所在的最近的一层循环;2、跳出所在的最近一层switch结构
加载更多回复(2)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧