求助关于C语言一道选择题 !

设有以下代码do{while(条件表达式1)循环体A;}while(条件表达式2);while(条件表达式1){do{循环体B;}while(条件表达式2);}其中,循环... 设有以下代码
do {
while (条件表达式1)
循环体A;
} while (条件表达式2);
while (条件表达式1)
{
do {
循环体B;
} while (条件表达式2);
}
其中,循环体A与循环体B相同,以下叙述正确的是
A) 循环体A与循环体B的执行次数相同
B) 循环体A比循环体B的执行次数多一次
C) 循环体A比循环体B的执行次数少一次
D) 循环体A与循环体B的执行次数不确定
参考答案:A
【解析】while循环语句一般形式为:while(表达式){循环体},执行过程为:首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。do…while循环语句一般形式为:do{循环体}while(表达式),执行过程为:首先执行循环体,之后判断表达式,成立(非0)则再一次执行循环体,不成立(0)则退出循环。假设表达式1与表达式2成立次数为n1与n2。若n1>n2,则循环体A执行次数为n2+1,B执行次数n2+1;若n1<n2,则循环体A执行次数为n1,B执行次数n1,A选项正确。

这道题的答案解析不太明白,为什么n1>n2,循环体A执行次数为n2+1,哪位大神能给解释一下,不胜感激!
展开
 我来答
lygszmjj
推荐于2016-06-02 · TA获得超过1814个赞
知道小有建树答主
回答量:1192
采纳率:0%
帮助的人:408万
展开全部
解析有问题。正确的解析应该是:
do {
循环体B;
} while (条件表达式2);
条件表达式2成立次数为n2,则循环体B执行次数为n2+1.因为条件表达式2成立就要执行一次,还要加上进入循环时执行的那一次。
而对于
while (条件表达式1)
循环体A;
条件表达式1成立次数为n1,则循环体A执行次数为n1。
基于上述分析
(1)
do {
while (条件表达式1)
循环体A;
} while (条件表达式2);
循环体A执行次数为n1*(n2+1)=n1*n2+n1
(2)
while (条件表达式1)
{
do {
循环体B;
} while (条件表达式2);
}
循环体B执行次数为(n2+1)*n1=n1*n2+n1

所以循环体A与循环体B的执行次数相同。

解析中讨论n1是否大于n2没有意义。需要注意的应当是,n2是否为0,因为do循环是至少要执行一次的。
更多追问追答
追问
do {
while (条件表达式1)
循环体A;
} while (条件表达式2);
循环体A执行次数为n1*(n2+1)=n1*n2+n1

do里面的 while (条件表达式1)
循环体A;
第一次循环完了以后条件1不是已经条件不满足了么,即使表达式2满足,第二次进入条件1的while 不是应该直接跳出不执行循环体A吗?
追答
我理解的是这是一个循环嵌套的问题。循环体A中应该有对条件1、2进行修改的语句,否则n1,n2就没有意义了。
按照你的理解,内层的while循环确实只执行一个周期,那么对于(1),循环体A将执行n1次,(2)循环体B将执行n1次。答案A依然成立。
也许等直到或许
2015-03-22
知道答主
回答量:9
采纳率:0%
帮助的人:3.6万
展开全部
首先你要分清结构,第一个是do.....while 循环中在do中套了一个while循环,然后接下来又是一个while循环,其中在while循序中有套了一个do....while循环。其次,你要分清出do....while 和while循环 的区别,do.....while 是不判断就先执行一次,while循环时先判断再执行。接下来,看题。首先执行do,..,但是当执行while(表达式1)时就要判断,如果满足条件才执行循环体A,否则不执行,其实这个和下面那个while循环先判断后执行就达到了同样的效果。所以循环体A和循环体B执行执行次数相同。希望对你有帮助。我没有看解析,自己的理解。
更多追问追答
追问
do里面的 while (条件表达式1)
循环体A;
第一次循环完了以后条件1不是已经条件不满足了么,即使表达式2满足,第二次进入条件1的while 不是应该直接跳出不执行循环体A吗?
追答
1.
do {
while (条件表达式1)
循环体A;
} while (条件表达式2);
....................................
2
while (条件表达式1)
{
do {
循环体B;
} while (条件表达式2);
}
拆成两个看。虽然第一个先执行do,但是当遇到do里面的while时有一个判断条件表达式1是否成立,假设不成了,则跳出while循环,也就是不执行循环体A。 接着看第二个,while先判断条件表达式1是否成立,1和2中都是表达式1,所以假设也不成立,那么就直接跳出,不执行里面的do ..while 循环,所以循序体B也不执行。依次类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式