习题册56章答案Word文档格式.docx

上传人:b****5 文档编号:16337947 上传时间:2022-11-23 格式:DOCX 页数:32 大小:48.70KB
下载 相关 举报
习题册56章答案Word文档格式.docx_第1页
第1页 / 共32页
习题册56章答案Word文档格式.docx_第2页
第2页 / 共32页
习题册56章答案Word文档格式.docx_第3页
第3页 / 共32页
习题册56章答案Word文档格式.docx_第4页
第4页 / 共32页
习题册56章答案Word文档格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

习题册56章答案Word文档格式.docx

《习题册56章答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《习题册56章答案Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。

习题册56章答案Word文档格式.docx

if(i%3){i++;

continue;

}

i++;

s+=i;

}while(i<

11);

printf("

%d\n"

s);

执行后输出结果是____A________

A)22 

B)16 

C)34 

D)21

本题考查的是do…while循环、if语句和continue(continue结束的本次循环,接着判断是否继续执行下一轮循环)。

在do…while循环中,先执行循环体,再判断i是否小于11.if(i%3)判断是否能整除3,余数为0,则进行i++;

s+=i;

不为0则为真,则进行{i++;

}由于包含contunue;

i++;

部分不执行,直接进行条件判断。

所以当i=0,3,6,9时,进行i++;

操作。

所以s=1+4+7+10=22.

4.运行以下程序后,如果从键盘上输入6514<

回车>

则输出结果为:

____C________

main()

{intm,n;

Enterm,n;

"

);

scanf("

%d%d"

&

m,&

n):

while(m!

=n)

{while(m>

n)m-=n;

while(n>

m)n-=m;

}

m=%d\n"

m);

A)m=3B)m=2C)m=1D)m=1

(1999-04-48)本题考查的是嵌套while循环,外层循环条件是m!

=n,由于从键盘输出后m=65,n=14;

因此不符合结束条件,进入循环体内。

(1)先执行循环体while(m>

即判断/m>

n,如果是循环执行m-=n,(即m=m-n);

因此此循环至少要执行4次m的值才可能不大于n(m=m-n*4=65-14*4=9),即此时m=9,n=14;

不符合本循环条件,跳出本循环。

(2)由于n>

m了,执行循环体while(n>

,执行后n=n-m=14-9=5,即此时m=9,n=5,不符合本循环条件,跳出本循环。

(3)但此时m!

=n,因此不跳出外层循环,继续执行while(m>

执行后m=4,n=5;

不符合本循环条件,跳出本循环。

(4)然后执行while(n>

执行后n=1,m=4,不符合本循环条件,跳出本循环。

(5)但此时m!

此循环需要执行3此m的值才可能不大于n(m=m-n*3=4-1*3=1),即此时m=1,n=1;

(6)由于此时m=n了,因此结束了外层循环,结果m=1,正确答案为C

5.有以下程序

{intn,s=0;

for(n=10;

30;

{if(n%3==0)

{s+=n;

continue;

if(s>

100)break;

printf("

A)117B)147 

C)127 

D)137

本题考查的是for循环\、if语句和continue\、break语句,其中break语句结束的。

是整个循环,continue结束的本次循环,接着判断是否继续执行下一轮循环。

本题中for循环变量n从10递增到29,在循环体中又两条嵌套的if语句,首先判断n%3==0,即判断n的值是否能被3整除,如果能整除,则加这些数累加到s,然后执行continue,跳出本次循环,执行n++,继续判断下一个数,如果不能被3整数,则判断s是否大于100,如果符合,则跳出整个循环。

因此本题的主要功能是循环累加10到29中能被3整除的数,如果累加和大于100,则退出循环。

因此当n=27时,s=12+15+18+21+24+27=117时,超过了100,退出循环,因此最后输出结果为117,正确答案为A.

6.以下程序执行后sum的值是___C______

min()

{inti,sum;

for(i=1;

6;

i++)sum+=i;

printf(“%d\n”,sum);

A)15B)14C)不确定D)0

(2001-04-26)此题考查的是for循环,实现1到6的累加并输出,但是由于sum的初始值位设定,因此其最后的值属于不确定值,正确答案为C.

7.有以下程序

main()

{inti,n=0;

for(i=2;

5;

{do

{if(i%4+1)continue;

n++;

}while(!

i);

}

printf(“n=%d\n”,n);

}

程序执行后的输出结果是____C_________

A)n=5 

B)n=2 

C)n=3 

D)n=4

此题考查的是for循环嵌套do-while循环。

本题执行for循环的条件是变量i的范围是2-4,循环3次。

进入do-while循环体,由于i%4+1的条件永远为真,因此一直执行continue,则跳出n++;

执行while(!

由于!

i为假,跳出do-while循环,执行n++;

因此n++;

执行3次,执行后n的值为3,正确答案为3.

以上过程可简写为:

i=2,判断i%4+1,(i%4+1)!

=0,执行continue,跳出本次循环,执行n++n=1

i=3,判断i%4+1,(i%4+1)!

=0,执行continue,跳出本次循环,执行n++n=2

i=4,判断i%4+1,(i%4+1)!

=0,执行continue,跳出本次循环,执行n++n=3

8.有以下程序

{inti;

for(i=0;

3;

switch(i)

{case1:

printf("

case2:

default:

i+1);

}

程序运行后的输出结果是______A_______

A)111223 

B)123 

C)011023D)122

本题考查的是for循环和switch语句,本题for循环的循环变量i从0到2,循环3次。

当i=0时,switch语句中,没有case匹配,进入default,执行printf("

i+i);

输出1(注输出1后无回车也无其他分隔符);

然后跳出switch语句,执行i++=i+1=1,符合循环条件i<

3,继续执行switch语句。

当i=1时,switch语句中,进入case1分支,执行printf("

在原来的1后输出1;

但由于case1分支后无break;

语句,因此继续执行case2分支,执行printf("

在原来的11后输出1,但由于case2分支后无break;

语句,继续执行default语句,执行printf("

在原来的11后输出2,即此步骤执行后为1112。

然后跳出switch语句,执行i++=i+1=2,符合循环条件i<

当i=2时,switch语句中,进入case2分支,执行printf("

在原来的1112后输出2;

但由于case2分支后无break;

在原来的11122后输出3,即为111223。

然后跳出switch语句,执行i++=i+1=3,不符合循环条件i<

3,结束循环。

以上过程可简写为:

i=0,执行default,输出1

i=1,执行case1,输出1

执行case2,输出1

执行default,输出2

i=2,执行case2,输出2

执行default,输出3

9.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是__A_____

 

A)(!

E=0)B)(E>

0||E<

0)C)(E==0)D)(E!

=0)

(2006-04-21)本题考查的是逻辑表达式,在C语言中,整型值可以转换为逻辑值,规则是:

当整型值为0时,它表示逻辑值假;

当整型值不为0时,它表示逻辑值真。

所以题目中的while(E)循环是当E等于0时,循环结束,E不等于0时,继续循环。

选项C中,当E等于0时,表达式“E==0”为真继续循环,而E不等于0时,表达式为假循环结束,这与题目中的条件不等价,故应该选择C。

10.要求通过while循环不断读入字符,当读入字母N时结束循环。

若变量已正确定义,以下正确的程序段是____A_______

A)while((ch=getchar())!

='

N'

)printf(“%c”,ch);

B)while(ch=getchar()!

C)while(ch=getchar()==N'

D)while((ch=getchar())=='

(2006-04-22)本题考查的是逻辑表达式与赋值表达式。

在C语言中,逻辑表达式的优先级高于赋值运算符的优先级。

所以在选项B和C中先计算getchar()!

N或getchar())=='

部分,然后将得到的一个逻辑值(“真”或“假”)赋给字符变量ch,在while循环体中输出的ch肯定不是我们输入的字符,故不为所选。

选项A和D中因为加了括号,所以先计算ch=getchar()部分,将输入的字符读入变量ch。

根据题意,要在读入字母N的时候结束循环,即while循环的循环条件是:

读入的字符不等于字母N。

故应该选择A。

11.有以下程序:

voidmain()

{

intk=10,n=0;

for(;

k;

{n++;

if(n++%3!

=0)continue;

k--;

printf(“%d,%d\n”,k,n);

程序运行后的输出结果是___D_____

A)7,7B)6,6C)3,3D)8,10

本题考查的是for循环。

其中for(;

)循环变量n的初始值没直接说明,但在定义时已经初始化,即n=0,而循环条件为n<

k,具体循环过程如下:

n=0时,n<

k(0<

10),符合循环条件,n++;

执行后n=n+1=1;

执行判断n++%3!

=0,即判断n++的值(n加1之前的值)是否不能被3整除(判断后n被加1),由于n值为1,因此n++%3!

=0返回真,执行continue退出本次循环,不执行k--;

此时n=n+1=2;

n=2时,n<

k(2<

执行后n=n+1=3;

=0,由于n值为3,因此n++%3!

=0返回假,执行k--;

此时k=k-1=10-1=9;

n=n+1=3+1=4;

n=4时,n<

k(4<

9),符合循环条件,n++;

执行后n=n+1=5;

=0,由于n值为5,因此n++%3!

此时n=n+1=6;

n=6时,n<

k(6<

执行后n=n+1=7;

=0,由于n值为7,因此n++%3!

此时n=n+1=7+1=8;

n=8时,n<

k(8<

执行后n=n+1=9;

=0,由于n值为9,因此n++%3!

此时k=k-1=9-1=8;

n=n+1=9+1=10;

n=10时,n<

k(10<

8),不符合循环条件,退出for循环。

最后输出8.10.正确答案为D

12.下列叙述中正确的是___D_____。

 A)break语句只能用于switch语句

 B)在switch语句中必须使用default

 C)break语句必须与switch语句中的case配对使用

 D)在switch语句中,不一定使用break语句

(2006-09-21)本题主要考查switch语句的概念。

break语句除了能用于switch语句外,还可以用于循环语句中,因此选项A不正确;

在switch语句中,可以使用default来执行所有case均失配时的分支,也可以不使用default,此时若所有case均失配跳出switch,因此选项B不正确;

在switch语句中,每个case的作用就是标出一个执行的起点,当符合某个case时,程序就从该case所标出的起点处开始执行,若没有break语句中执行的话,程序会一直执行到switch的最后一条语句,而不是碰到下一个case就跳出switch。

虽然break和case的配对使用会让所有case分支互不重叠条例明确,但不配对使用在C语言中是不允许的,因此选项C不正确。

正确答案为D.

13.下面程序的功能是输出以下形式的金字塔图案是:

*

***

*****

*******

*********

main()

{inti,j;

for(i=1;

=4;

{for(j=1;

j<

=4-i;

j++)printf(““);

for(j=1;

=_______;

j++)printf(“*”);

printf(“\n”);

}

在下划线处应填入的是____C_______

A)i 

B)2*i-1 

C)2*i+1 

D)i+2

(2004-04-42)本题考查的是嵌套for循环。

第一个for循环的循环变量i从1递增到4,用来表示行数为4行;

第二个for循环的循环变量j从1递增到4-i,用来输出每行左边的空格,

当i=1(第一行),循环4-i=4-1=3次,输出3个空;

当i=2(第二行),循环4-i=4-2=2次,输出2个空;

当i=3(第三行),循环4-i=4-1=1次,输出1个空;

当i=4(第四行),循环4-i=4-2=4次,输出0个空;

第二个for循环的循环变量j从1递增到4-i,用来输出每行的*号,

当i=1(第一行),需循环3次,输出3个*;

当i=2(第二行),需循环5次,输出5个*;

当i=3(第三行),需循环7次,输出7个*;

当i=4(第四行),需循环9次,输出9个*;

根据循环次数与i值的特点,可以发现每次需循环2*i+1次。

因此本题则横却答案为C

14.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;

b<

=c;

b++)s=s+1;

则与上述程序段功能等价的赋值语句是___B_____

A)s=a+b;

 

B)s=a+c;

C)s=s+c;

D)s=b+c;

(2003-09-22)本题考查是for循环,循环变量b从1递增到c,每次循环s=s+1,加c个1,s的初始值为a,因此相当于s=a+c;

15.请读程序片段:

#include<

stdio.h>

{inta,b;

for(a=1;

b=1;

a<

=100;

a++)

{if(b>

=20)break;

if(b%3==1)

{b+=3;

b-=5;

a);

上面程序的输出结果是_____A______

A)7B)8C)9D)10

(1996-04-22)本题考查的是for循环和break、continue语句。

For循环的循环变量从1增加到100,判断如果b>

=20则退出整个循环,否则判断b%3==1,即b整除3是否余1,如果是,则b=b+3;

退出本次循环,否则b=b-5;

结束本次循环。

以下是循环过程:

第一次:

a=1,b=1,判断b>

=20不符合条件,不执行break;

判断b%3==1(1%3==1)符合条件,执行b=b+3=1+3=4;

然后执行continue退出本次循环。

然后a++,a=2,符合a<

=100继续循环。

用同样的方法可以继续执行循环,但会发现一个规律,b会一直符合b%3==1,执行b+=3;

continue语句,因此不会执行b-=5;

语句。

这样b从初始值1开始加7次后,即b=1+3*7=22后,满足b>

=20这个条件,执行break语句,跳出整个循环。

此时a也累加了7次,,所以正确答案A。

16.以下程序的功能是计算正整数234的各位数字之和。

{intn,sun=0;

n=234;

while(n)

{sun=sun+n%10;

n=______;

printf(“sun=%d”,sun);

请把适当的选项填在下划线处___B________

A)n/100B)n/10C)n%100D)n%10

本题考查的是while循环。

本题的功能是计算正整数234的各个数字之和,因此需要分离出百位、十位和个位。

可以先将234与10取余可以先得到个位数4,然后除以10,变成23,再与10取余可以得到十位数3,再除10,变成2,与10取余可以得到百位数2,将这些数加起来就可以实现题目的功能。

可以发现在循环与10取余,并且将原数除以10.而程序中:

while(n)是判断n是否为0,如果不为0,执行sun=sun+n%10,实现与10取余并将余数累加,因此在后面得语句主要可以实现将原数除以10的功能,即n=n/10.正确答案为B

17.以下程序中,while循环的循环次数是_____D______

{inti=0;

while(i<

10)

{if(i<

1)continue;

if(i==5)break;

i++;

......

A)1B)10

C)6D)死循环,不能确定次数

(2002-04-25)本题主要考查while循环和continue、break语句.i的初始值为0,当i<

10时进入循环体,先执行if(i<

1),由于i=0,满足条件,则执行continue;

退出本次循环,不执行if(i==5)break;

和i++;

因此i没有任何变化,一直执行if(i<

变成了死循环,正确答案为D.

18.以下程序的输出结果是____A________

{inta=0,i;

for(i=1;

{switch(i)

{case0:

case3:

a+=2;

case1:

case2:

a+=3;

default:

a+=5;

A)31B)13C)10D)20

(2002-04-26)本题考查的是for循环和switch语句,执行过程如下:

i=1时,进入case1分支,但其后无任何执行语句,则进入case2分支,执行a+=3(a=a+3)a=3;

但没有遇到break语句,继续执行default部分,a+=5;

a=8

i=2时,进入case2分支,执行a+=3(a=a+3)a=11;

a=16

i=3时,进入case3分支,执行a+=2(a=a+2)a=18;

但没有遇到break语句,进入case1分支,但其后无任何执行语句,则进入case2分支,执行a+=3(a=a+3)a=21;

a=26

i=4时,无case分支匹配,执行default部分,a+=5;

a=31

i=4时,不符合循环条件,退出整个循环,因此正确答案为A

19.有以下程序

{inty=10;

while(y--);

printf(“y=%d\n”,y);

程序执行后的输出结果是___B________

A)y=0B)y=-1C)y=1D)while构成无限循环

(2006-04-30)本题考查的是while循环与—运算符。

本题中有一个陷阱,很多考生会根据程序中的书写格式来判断while循环的循环体为printf(“y=%d\n”,y);

其实while的循环体是一条空语句,即y—后面的那个分号就是while的循环体。

所以本题只要弄清楚表达式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1