C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx

上传人:b****6 文档编号:18121471 上传时间:2022-12-13 格式:DOCX 页数:25 大小:25.10KB
下载 相关 举报
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx_第1页
第1页 / 共25页
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx_第2页
第2页 / 共25页
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx_第3页
第3页 / 共25页
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx_第4页
第4页 / 共25页
C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx

《C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。

C语言各章节单元测试题及答案循环结构程序设计Word格式文档下载.docx

while(i<

10)

{if(i<

1)continue;

if(i==5)break;

i++;

......

A)1B)10C)6D)死循环,不能确定次数

本例考查while循环的用法,以及continue和break的分别。

本题要求的是循环次数,首先要检查while中的判断条件,i<

10是有限循环,然后再观察while内部,if(i<

第一次循环i=0,满足if条件,执行continue直接跳出循环,不再执行循环内部的其它语句,再次执行while(i<

10),而此时i的值仍为0,无疑仍然重复以上步骤,那么i的值没有变化,循环继续,本题是死循环。

D

【例4】假定a和b为int型变量,则执行以下语句后b的值为。

a=1;

b=10;

do{

b-=a;

a++;

}while(b--<

0);

A)9B)–2C)-1D)8

本例考查do-while循环的用法。

第一次循环a=1,b减去a后b=9。

然后执行“while(b--<

”,为假跳出循环。

所以本程序的循环仅执行1次,9-1=8。

【例5】设j为int型变量,则下面for循环语句的执行结果是。

for(j=10;

j>

3;

j--)

if(j%3)

j--;

--j;

printf("

%d"

j);

A)63B)74C)62D)73

本例考查for循环的用法。

本题的难点可能是几个“j--;

”、“--j;

”容易让人混淆第一次循环j=10,j%3后j连续减三次1,得到7,继续第二次循环;

第二次循环j%3后j连续减三次1,得到4,结束循环。

【例6】在下列选项中,没有构成死循环的程序段是。

A)inti=100B)for(;

;

);

inti=100;

while

(1)

i=i%100+1;

if(i>

100)break;

C)intk=1000;

D)ints=36;

do{++k;

while(s);

--s;

}while(k>

=1000);

本例考查死循环。

A)要退出循环必须满足i>

100,但是执行语句“i=i%100+1;

”后,i不可能超过100;

B)没有循环条件,显然为死循环;

C)经过“k++”后,k的值一定是大于1000的,所以也为死循环;

D)中的循环控制为s,s每循环一次则递减,s<

0时,退出循环,所以D不是死循环。

【例7】运行以下程序后,如果从键盘上输入china#<

回车>

,则输出结果为。

#include<

stdio.h>

intv1=0,v2=0;

charch;

while((ch=getchar())!

='

#'

switch(ch)

case'

a'

:

h'

o'

v2++;

default:

v1++;

%d,%d\n"

v1,v2);

A)2,0B)5,0C)5,5D)5,2

本例考查switch的用法。

本题的程序是为了检查输入字符中a、h、o的个数。

【例8】以下程序的输出结果是。

inta=0,i;

for(i=1;

i<

5;

i++)

{switch(i)

{case0:

case3:

a+=2;

case1:

case2:

a+=3;

a+=5;

%d\n"

a);

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

本例考查for循环中switch的用法。

可以看出此题和上一例题类型一样,只不过上一例题考的是while和switch,而此题考查的是for和switch。

大家在分析历年考题时会发现很多题型多次重复出现,所以我们在复习的过程中对以前试题要详加分析。

分析本题得到,for一共循环4次,每次循环内部再执行switch,但是有一个问题,本题的case没有break语句结束,所以要从casei一直执行到default,这一点一定要注意!

不难发现,i=1时,a=a+3+5=8;

i=2时,a=a+3+5=16;

i=3时,a=a+2+3+5=16+10=26;

i=4时,a=a+5=31。

A

【例9】以下程序的输出结果是。

inti,j,x=0;

for(i=0;

2;

x++;

for(j=0;

j<

j++)

if(j%2)continue;

x=%d\n"

x);

}

A)x=4B)x=8C)x=6D)x=12

本例考查for嵌套。

本题有两层for循环,内层for循环中嵌套if判断。

首先从i=0,j=0开始,x=x+1=0+1=1;

j%2=0%2,则x=x+1=1+1=2,再执行内层循环,i=0,j=1,x=3;

继续i=0,j=2,j%2=2%2=0,跳出循环;

再执行i=1,x=x+1=3+1=4;

接着i=1,j=0,x=5;

i=1,j=1,x=6,再下来j=2跳出循环,最终x=6。

这一题关键要看x能循环几次。

【例10】运行以下程序后,如果从键盘上输入6514<

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=0

本例考查while嵌套。

本题主要是为了比较m和n的大小,用了两层while循环,直到m=n了才退出循环(注意循环结束的条件)。

开始循环m=65n=14,65>

14,所以执行”while(m>

n)m-=n;

”,m=m-n=65-14=51,又51>

14,接着m=m-n=51-14=37,直到m<

n,m=9,n=14,继续执行”while(n>

m)n-=m;

”,n=n-m=14-9=5,再执行”while(m>

”,m=m-n=9-5=4。

4<

5,再执行”while(n>

”,n=n-m=5-4=1,接下来m>

n,再继续m=m-n,一直到m=1,此时m=n=1不再循环。

本题还可以这样看,当m>

n时,循环执行m-n,所以65除以14,商4余9,9是最终执行m-n的结果m=9;

再来当n>

m时,循环执行n-m,所以14除以9,商1余5,此时n=5,m=9,接着m>

n,再执行m-n,同样9除以5,商1余4,m=4,n=5,再来用5除以4,余1,此时n=1,最后不难得到m=1,m=n=1,不再循环。

本题可以看作是求m和n的公因数。

【例11】有以下程序

inti=0,s=0;

do{

if(i%2){

continue;

s+=i;

}while(i<

7);

s);

执行后输出结果是。

A)16B)12C)28D)21

本例考查continue。

初始赋值时s=0,由题意知s的值与i有关。

if(i%2){i++;

}则i=1,3,5时,执行s+=i;

即s=1+3+5+7=16。

7)退出循环。

3.1.2填空题

【例1】以下程序运行后的输出结果是。

{inti,m=0,n=0,k=0;

for(i=9;

i<

=11;

switch(i/10)

m++;

n++;

break;

case10:

n++;

break;

k++;

%d%d%d\n"

m,n,k);

本例考查for循环与switch的结合应用。

for循环i从9开始到11,共循环3次,i=9时,i/10的值为0,执行case0,m=1,n=1;

i=10时,i/10的值为1,执行default,k=1,n=2;

i=11时,i/10的值为1,执行default,k=2,n=3。

132

【例2】以下程序的功能是调用函数fun计算:

m=1-2+3-4+…+9-10,并输出结果。

请填空。

intfun(intn)

{intm=0,f=1,i;

=n;

i++)

m+=i*f;

f=【1】;

returnm;

{printf("

【2】);

}

本例考查函数调用中for的应用。

此题要用到for循环,关键问题在于循环的次数和对加减数的处理,显然本题要循环10次,所以,n的值为10。

注意到奇数加,偶数减所以m+=i*f中的f用到正负数变化,f=-f或f*-1或-1*f或f*(-1)或(-1)*f,最终打印的m值是由fun函数计算的,intn的值应该由主函数传入10。

【1】f=-f或f*-1或-1*f或f*(-1)或(-1)*f;

【2】fun(10)

【例3】下面程序的功能是:

计算1到10之间奇数之和及偶数之和,请填空。

inta,b,c,i;

a=c=0;

10;

i+=2)

{a+=i;

;

c+=b;

偶数之和=%d\n"

奇数之和=%d\n"

c-11);

本例考查for的简单应用。

在做填空题的时候,先要看整个程序的流程,然后再考虑如何填入语句以符合题意。

本题要得到的是1-10之间的奇、偶数之和,for(i=0;

i+=2)此语句共执行5次,显然a+=i是为了得到偶数之和,那么c+=b应该是求奇数之和,而且是由前一个我们需要填入的语句决定,b是每次加入的数据,那么要填的语句应该是b的取值,i是0、2、4、6、8,那么b应该是1、3、5、7、9,可以由i得来,所以b=i+1。

b=i+1

【例4】下面程序的功能是:

输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<

{inti,j;

【1】;

{j=i*10+6;

if(【2】)continue;

%d"

本例考查for和continue的结合使用。

本题需要输出100以内能被3整除且个位数为6的所有整数。

先看程序流程。

【1】

(1)i<

10【2】

(2)i%3!

=0

【例5】以下程序运行后的输出结果是_。

{intx=15;

while(x>

10&

&

x<

50)

{x++;

if(x/3){x++;

elsecontinue;

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

本例考查break和continue在循环结构中的综合使用。

本题输出15到50以内第一个被3整除不为0的整数且让该整数加1。

17

3.2自测练习与参考答案

3.2.1选择题

1.以下程序的输出结果是。

main()

intx=10,y=10,i;

x>

8;

y=++i)

%d%d"

x--,y);

A)10192B)9876C)10990D)101091

2.以下程序的输出结果是_______。

{intn=4;

while(n--)printf("

--n);

A)20B)31C)321D)210

3.执行下面程序片段的结果是_______。

intx=23;

do

%2d"

x--);

while(!

x);

A)321B)23C)不输出任何内容D)陷入死循环

4.以下程序的输出结果是________。

inti;

6;

if(i%2){printf("

#"

*"

\n"

A)#*#*#B)#####C)*****D)*#*#*

5.以下循环体的执行次数是________。

main()

{inti,j;

for(i=0,j=1;

=j+1;

i+=2,j--)printf("

%d\n"

i);

A)3B)2C)1D)0

6.有如下程序

{inti,sum;

=3;

sum++)sum+=i;

sum);

该程序的执行结果是_______。

A)6B)3C)死循环D)0

7.有以下程序段

intn=0,p;

do{scanf(“%d”,&

p);

}while(p!

=12345&

n<

3);

此处do-while循环的结束条件是______。

(2002年9月)

A)P的值不等于12345并且n的值小于3

B)P的值等于12345并且n的值大于等于3

C)P的值不等于12345或者n的值小于3

D)P的值等于12345或者n的值大于等于3

8.有如下程序

{intn=9;

6)

n--;

n);

该程序段的输出结果是_______。

A)987B)876C)8765D)9876

9.以下程序的输出结果是_______。

for(i='

A'

'

I'

i++,i++)

%c"

i+32);

\n"

A)编译不通过,无输出B)aceg

C)acegiD)abcdefghi

10.有以下程序段

intk=0

while(k=1)k++;

while循环执行的次数是_______。

A)无限次B)有语法错,不能执行

C)一次也不执行D)执行1次

11.以下程序执行后sum的值是_______。

{inti,sum;

i++)sum+=i;

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

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

12.有以下程序

{inti;

for(i=0;

switch(i)

{case1:

printf("

i);

default:

A)011122B)012C)012020D)120

13.以下程序的输出结果是_______。

{intnum=0;

while(num<

=2)

num++;

num);

A)1B)1C)1D)l

222

33

4

14.以下程序的输出结果是_______。

inta,b;

for(a=1,b=1;

a<

=100;

a++)

{if(b>

if(b%3==1)

b+=3;

A)101B)6C)5D)4

15.有以下程序

{intk=4,n=0;

for(;

n<

k;

{n++;

if(n%3!

=0)continue;

k--;

}

k,n);

程序运行后的输出结果是_______。

A)1,1B)2,2C)3,3D)4,4

16.有以下程序

{ints=0,a=1,n;

&

do{

s+=1;

a=a-2;

while(a!

=n);

若要使程序的输出值为2,则应该从键盘给n输入的值是_______。

A)-1B)-3C)-5D)0

17.要求以下程序的功能是计算:

s=1+1/2+1/3+……+1/10

intn;

floats;

s=1.0;

for(n=10;

n>

1;

n--)

s=s+1/n;

%6.4f\n"

程序运行后输出结果错误,导致错误结果的程序行是_______。

A)s=1.0;

B)for(n=10;

n--)C)s=s+1/n;

D)printf("

18.执行以下程序后,输出的结果是。

inty=10;

y--;

}while(--y);

y--);

A)-1B)1C)8D)0

19.执行语句:

i++<

4;

)后,变量i的值是。

A)3B)4C)5D)不定

20.以下程序的输出结果是_______。

voidmain()

{intk=0,m=0;

inti,j;

{for(j=0;

k++;

k-=j;

m=i+j;

k=%d,m=%d"

k,m);

A)k=0,m=3B)k=0,m=5C)k=1,m=3D)k=1,m=5

21.当执行以下程序段时。

intx;

x=-1;

x=x*x;

A)循环体将执行一次B)循环体将执行两次

C)循环体将执行无限次D)系统将提示有语法错误

22.当执行以下程序时_______。

do

x)

A)循环体将执行一次B)循环体将执行两次

C)循环体将执行无限次D)系统将提示有语法错误

23.下述循环程序_______。

for(a=0,b=0;

3&

b!

a++);

A)是无限次循环B)循环次数不定

C)循环3次D)循环4次

24.在下列程序中,没有构成死循环的程序段是_______。

A)inti=100;

B)intk=1000;

while

(1)do

{i=i%100+1;

{++k;

=10000);

C)for(;

while(s);

--s;

25.若程序执行时的输入数据是“2473”,则下述程序的输出结果是_______。

intcx;

while((cx=getchar())!

\n'

switch(cx-'

2'

case0:

putchar(cx+4);

putchar(cx+3);

putchar(cx+2);

A)668977B)668966C

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

当前位置:首页 > 高等教育 > 艺术

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

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