C语言 循环体结构 解释 5

在下列选项中,没有构成死循环的程序段是A)inti=100;while(1){i=i%100+1;if(i>100)break;}B)for(;;);C)intk=100... 在下列选项中,没有构成死循环的程序段是
A) int i=100;
while (1)
{ i=i%100+1;
if (i>100) break;
}
B) for( ; ; );
C) int k=1000;
do {++k;} while (k>=1000);
D) int s=36;
while (s) --s;
D
能把对错详细的解释下吗
展开
 我来答
文昭九日
2010-12-29 · TA获得超过278个赞
知道小有建树答主
回答量:111
采纳率:0%
帮助的人:137万
展开全部
A中,对于int i=100;i=i%100+1;循环变量i的更新为i对100取余+1。任何整形对于N取余的结果都在[0,100)之间,就算+1,i也永远不会大于100,故为死循环。
B.典型的死循环,没有循环变量控制,循环体内部是空语句 只有一个空语句“ ; ”。这是一个不做任何操作的死循环。
C.这道题的bug恐怕就在选项C了。从出题人的意思来看,k初始值是1000。do while的特点是每做一遍循环体中的内容{++k;},然后再检查循环条件(k>=1000)。循环体++k第一次运行之后,k已经大于1000了,满足循环继续下去的条件。所以出题人认为,在后续的循环过程中,k不断的自增,k永远不会小于1000。所以出题人认为这个也是个死循环。
D.s被初始化为36,每次循环都执行一次--s,s的内容会自减1.while(s)的意思就是当s非零的时候,执行循环体。s是每次循环自减的,从36开始自减,执行36次之后,s就为0了,不再满足循环条件。于是循环是可以结束的,不是死循环。

注:
1.while(exp){stat;}
a)检查exp的值
b)当表达式exp为非零值, 执行循环体中的语句stat,并回到a);当表达式exp的值为0,终止循环 。
2.do{stat;}while(exp);
a)执行循环体语句stat,然后检查exp的值;
b)如果exp的值非零,则回到a)继续循环;如果exp为零,终止循环
3.for(exp1; exp2;exp3){stat;}
a)循环体第一执行前,先执行exp1;
b)检查exp2的值,如果exp2非零做c);如果exp2为零,终止循环;
c)执行循环体中的stat语句,然后执行exp3,再回到b)

p.s.这个出题人在题中的选项C翻了一个错误,其实有符号的整形int在自增到int能表示的正最大值之后继续自增会变成int能表示的负最小值。这种行为叫做int的溢出。所以k会在自增的过程中突然变成负值,小于1000了,循环会终止。但终止的原因如我所述,而不是逻辑上期待的终止方式。详细的情况,感兴趣的话去翻翻书或者问问老师,问我也可以……
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友ceafeab
2010-12-29 · TA获得超过156个赞
知道答主
回答量:131
采纳率:0%
帮助的人:91.6万
展开全部
A i=i%100+1; i永远不会大于100,所以if语句不可能成立,死循环打破不了。

B for语句没有结束条件,所以也是死循环;

C k初始值为1000, 当k>=1000是,k递增,所以会一直往上增加,构成死循环;

D s初始值为36;当s>0时s递减,所以最后能减到s值为零,结束循环。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-29
展开全部
我觉得是A
第一次执行完后i为1,每一次都加1,但是到99次时i=100,100次时i又回到1,只有当i大于100(够101时)才会跳出循环,所以死循环
B应该会提示出错的吧,无法编译
C到K溢出时会是负值,不满足K大于等于1000,跳出循环
D当S减到0的时候就跳出循环(0是假,除0以外所有值都是真)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式