请高人帮忙解决一C语言题,详细点最好!

#include<stdio.h>main(){inti,m;scanf(“%d”,&m);for(i=2;i<=m/2;i++)if(m%i==0){printf(“%... # include<stdio.h>
main( )
{ int i, m;
scanf(“%d”, &m);
for(i = 2; i <= m/2; i++)
if (m % i == 0){
printf(“%d#”, i);
break; /* 第8行 * /
}
printf(“%d”, i);
}
(13) 程序运行时,输入5,输出 (13) 。
A、3 B、3#3
C、3#4 D、3#5
(14) 程序运行时,输入9, 输出 (14) 。
A、3 B、3#3
C、3#4 D、3#5
(15) 将第8行改为“continue”后,程序运行时,输入9,输出 (15) 。
A、3 B、3#3
C、3#4 D、3#5
(16) 将第8行改为“;”后,程序运行时,输入9,输出 (16) 。
A、3 B、3#3
C、3#4 D、3#5

那个break,是跳出一层循环还是整个循环体,还有,当求余不等于0时,是继续进行循环还是用最后的printf输出!谢谢了,请详细帮我解答下!
展开
 我来答
huangluo0722
2010-11-10 · TA获得超过242个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:171万
展开全部
break只会跳出最里边的一层循环!不会跳出循环体,但在你写的这个代码里边是的,因为只有一层循环。当求余不为零时还是会循环,循环结束的条件是求余等于0,或者是i<=2。当循环停止后才会执行到最后那个printf语句去!
不懂再问
百度网友d097781
2010-11-11 · TA获得超过2579个赞
知道小有建树答主
回答量:1132
采纳率:0%
帮助的人:1201万
展开全部
首先提醒你:
C++里面不能使用中文标号,如“”必须使用英文的""才可以。
/*第8行* /后面*/之间不能有空格,否则不会识别为注释的终止标识。
13: 答案:3#5
14: 答案:3#3
15: 答案:3#5
16: 答案:3#5

关键字break是终止循环用的,可以终止整个循环,但是只是本层循环,也就是这个关键字在那一个循环里面,执行到该语句后,会跳出这个循环,但只是跳出本层而已。
关键字continue的作用是略过循环中continue;语句后的语句回到最外层用的,相当于终止本次的循环,这里它只是终止执行continue;语句后的语句,然后执行下一次循环,并没有终止整个循环。
**这里需要注意的是,continue没有break对于本层循环这样的约束,当执行循环遇到continue时,不管是否是单层循环还是多层循环,效果都是一样的,都会跳过后面的所有语句回到最外层循环。所以continue语句可以放在循环中的任何层,效果是一样的,都是跳过后面执行最外层,所以在多层嵌套时要注意。
因为这里continue;语句后面没有任何语句,所以continue;语句和;(空语句)的效果的一样的。所以15、16题答案相同。

而if语句是对后面的表达式进行求值,(m % i == 0)是一个关系表达式,当表达式是成立的,那么其逻辑值为真(非0),如果不成立,则为假(0),这里求余运算如果是0,比如9%3==0,这个表达式是成立的,因为9余对3求是等于0的,所以整个(9 % 3== 0)的值是1,if循环继续执行,如果表达式不成立,如8%3==0,那么这个表达式是不成立的,因为8对3求余等于2,不等于0,所以(8 % 3== 0)是错误的,值为0,if循环终止。

我们如果把(m % i == 0)修改成(m % i)那么就是根据求余值来判断逻辑值了,9%3结果为0,那么整个表达式的结果是0,那么逻辑值取表达式的值0,逻辑值也为0(假),那么循环就终止了。8%3结果为2,那么整个表达式的结果也是2,那么逻辑值认为2不等于0,则逻辑值为非0,即1(真)。循环继续。

现在你明白了吧。希望能帮到楼主O(∩_∩)O~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式