C语言课后习题_第1页
C语言课后习题_第2页
C语言课后习题_第3页
C语言课后习题_第4页
C语言课后习题_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章C语言概述

1一个C程序的执行是从

本程序的main函数开始,到main函数结束

本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

本程序的main函数开始,到本程序文件的最后一个函数结束

本程序文件的第一个函数开始,到本程序main函数结束

2以下叙述正确的是

在C程序中,main函数必须位于程序的最前面

C程序的每行中只能写一条语句

C语言本身没有输入输出语句

在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3以下叙述不正确的是______

一个C源程序可由一个或多个函数组成

一个C源程序必须包含一个main函数

C程序的基本组成单位是函数

在C程序中,注释说明只能位于一条语句的后面

4C语言规定:在一个源程序中,main函数的位置

必须在最开始

必须在系统调用的库函数的后面

可以任意

必须在最后

5一个C语言程序是由______

一个主程序和若干子程序组成

函数组成

若干过程组成

若干子程序组成

第二章数据类型、运算符与表达式

1在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排

顺序为一

char<int<longint〈二float〈double

char=int<longint<=float<double

char<int<longint=float=double

char=int=longint<=float<double

2若x、i、j和k都是int型变量,则执行下面表达式后x的值为

x=(i=4,j=16,k=32)

A)4

B)16

C)32

D)52

3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是

A)7

B)8

06

D)2

4下列四组选项中,均不是C语言关键字的选项是

A)defineB)getcC)includeD)while

IFcharscanfgo

typeprintfcasepow

5下面四个选项中,均是C语言关键字的选项是______

auto

switch

signed

if

6下面四个选项中,均是不合法的用户标识符的选项是

A)AB)floatC)b-aD)-123

P0laOgototemp

do_AintINT

7C语言中的标识符只能由字母、数字和下划线三种字符组成.且第一个字

不丽为字母

必须为下划线

必须为字母或下划线

可我是字母、数字和下划线中任一种字符

8下面四个选项中,均是合法整型常量的选项是

A)160

-Oxffff

Oil

B)-0xcdf

Ola

Oxe

c)-Ol

986,012

0668

D)-0x48a

2c5

Ox

9下面四个选项中,均是不合法的整型常量的选项是

--Of1

-Oxffff

0011

-OXcdf

017

12.456

-018

999

5e2

-0x48eg

-068

03f

10下面四个选项中,均是不合法的浮点数的选项是一

A)160.

0.12

e3

B)123

2e4.2

.e5

0-18

123e4

0.0

D)-e3

.234

lc3

11下面四个选项中,均是合法浮点数的选项是

A)+le+l

5e-9.4

03e2

B)oabc

017

Oxa

C)010

-Oxll

0x16

D)0al2

7ff

-123

16下面四个选项目,均是正确的八进制数或十六进制数的选项是

A)-10

0x8f

-011

B)Oabc

017

Oxc

O0010

一Oxll

Oxfl

D)0a12

-0x123

一Oxa

17下面四个选项中,均是正确的数值常量或字符常量的选项是_

A)0.0

Of

8.9c

B)“a"

3.9E—2.5

Lei

C)3

011

OxFFOO

0a

D)+001

Oxabcd

2e2

50.

18下面不正确的字符串常量是

A)<abc,

B)“12,12"

C)“0”

D)"“

»^*»|*»1**|^»!*»|**^*»1*

19对应以下各代数式中,若变量a和x均为double类型,则不正确的语言

表达式是_C—

代数式C语言表达式

A)eXx_2/2)/2-0.5*piexp(x*x/2)/sqrt(2*3.14159)

B)0.5(ax+(a+x)/4a)1/2*(a*x+(a+x)/(4*a))

sqrt(sinx)2.5

sqrt((pow(sin(x*3.14159/180),2.5))

D)x“2-e5x*x-exp(5.0)

»!*»1**1**f*»!*、/»1**1*»f*»!*»1**1*»i*

20若有代数式3ae/bc,则不正确的C语言表达式是

a/b/c*e*3

B)3*a*e/b/c

3*a*e/b*c

a*e/c/b*3

21已知各变量的类型说明如下:

intk,a,b;

unsignedlongw=5;

doublex=1.42;

则以下不符合C语言语法的表达式是

x%(-3)

w+=-2

k=(a=2,b=3,a+b)

a+=a-=(b=4)=(a=3)

22已知各变量的类型说明如下:inti=8,k,a,b;

unsignedlong

w=5;

double

x=l.42,y=5.2:

则以下符合C语言语法的表达式是;

Aa+=a-=(b=4)*(a=3)

Ba=a*3=2

Cx%(-3)

Dy=float(i)

23以下不正确的叙述是______

在C程序中,逗号运算符的优先级最低

在C程序中,APH和aph是两个不同的变量

若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,

而b中的值不变。

当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只

能输入实型数值。

24以下正确的叙述是______

在C程序中,每行中只能写一条语句

若a是实型变量,C程序中允许赋值"10,因此实型变量中允许存放整

型数

在C程序中,无论是整数还是实数,都能被准确无误地表示

在C程序中,%是只能用于整数运算的运算符

25以下符合C语言语法的赋值表达式是

Ad=9+e+f=d+9

Bd=9+e,f=d+9

Cd=9+e,e++,d-9

Dd=9+e++=d+7

26已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句

c2='A'+'6'-'3后,c2中的值为

AD

B)68

C不确定的值

DC

27在C语言中,要求运算数必须是整型的运算符是-

A)/

B)++

C)!=

D)%

28若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,

++num后sum的值为

A)7

B)8

09

D)10

29在C语言中,int,cha门'和short三种类型数据在内存中所占用的字节

数______

由用户自己定义

均为2个字节

是任意的

由所用机器的机器字长决定

30若有说明语句:charc=、\72';则变量c

包含1个字符

包含2个字符

包含3个字符

说明小合法,C的值不确定

31若有定义:Tnta=7;floatx=2.5,y=4.7;则表达式

x+a%3*(int)(x+y)%2/4的值是

A)2.500000

B)2.750000

C)3.500000

D)0.000000

32sizeof(float!是

一个双精度型表达式

•个整型表达式

一种函数调用

一个不合法的表达式

33设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f

值的数据类型为

int

float

double

不确定

34下面四个选项口,均是非法常量的选项是是______

A)<as,

—Offf

"\0xa

B)'\\'

'01'

12.456

0-0x18

01177

Oxf

Oxabc

'\0'

“a”

..vl*^1*xi*«£z*£z*£xxl*vl*xfzxl*v£*

35若有代数式sqrt-x+loglOy,则正确的C语言表达式是

sqrt(fabs(pow(Y,x)+log(Y)))

sqrt(abs(pow(Y,x)+tog(Y)))

sqrt(fabs(pow(x,Y)+log(Y)))

sqrt(abs(pow(x,Y)+tog(Y)))

wx^1*wx«zzwx«zx*^*

36若有代数式|x~3十loglOx|,则正确的C语言表达式是一

fabs(x*3+log(x)J

abs(pow(x,3)+log(x)).

abs(pow(x,3.0)+log(x))

fabs(pow(x,3.0)+log(x))

37在C语言中,char型数据在内存中的存储形式是一

补码

反码

原码

ASCII码

38点后两位,第三位进行四舍五入运算的表达式是设变量n为float类型,m

为int类型,则以下能实现将n中的数值保留小数

n=(n*100+0.5)/100.0

m=n,100+0.5,n=n/l00.0

n=n*100+0.5/100.0

n=(n/100+0.5;*100.0

39表达式18/4*sqrt(4.0)/8值的数据类型为

int

float

double

不确定

40设C语言中,一个.int型数据在内存中占2个字节,则unsignedint

型数据的取值范围为.

A)0~255

B)0^32767

C)(T65535

D)0^2147483647

41设有说明:chapw;intx;floaty;doublez;则表达式w*x+z-y值

的数据类型为

float

char

int

double.

42若有以下定义,则能使值为3的表达式是

intk=7,x=12;

x%=(k%=5)

x%=(k-k%5)

x%=k-k%5

D)(x%=k)一(k%=5;

43设以下变量均为int类型,则值不等于7的表达式是

A)(x=y=6,x+Y,x+1)

B)(x=Y=6,x+Y,y+1)

C)(x=6,x+1,Y=6,x+Y)

D)(Y=6,Y+1,x=Y,x+1)

第三章最简单的c程序设计

1putchar函数可以向终端输出一个_D

整型变量表达式值

实型变量值

字符串

字符或字符型变量值

2以下程序的输出结果是_D—

mainO

{printf("\n*sl=%15s*","chinabeijing");

printf(〃\n*s2=%-5s*,“chi〃);

A)*s1=chinabeij.ng**s2二**chi*

B)*s1=chinabeijing**s2=chi*

C)*sl=*chinabeijing**s2=chi*

D)*sl=chinabeiing**s2=chi*

3printf函数中用到格式符写%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出按方式[1];如果:字符串长度小于5,则输出按

方式[2].BC

从左起输出该字串,右补空格

按原字符长从左向右全部愉出

右对齐输出该字串,左补空格

输出错误信息

4已有定义inta义;和输出语句printf("%81x”,a);以下正确的叙述是_

整型变量的输出格式符只有%d一种

B)%x是格式符的一种,它可以适用于任何一种类型的数据

%x是格式符的一种,其变量的值按十六进制输出,但%81x是错误的

%81x不是错误的格式符,其中数字8规定了输出字段的宽度

5以下C程序正确的运行结果是_C

mainO

{longy=43456;

printf('y=%81d\n,\Y);

printf(〃y=%-081d\n",Y);

printf(〃y=%081d\n",Y);

printfCY=%+81d\n,\y);

Ay=-43456

Y二一43456

Y二一0043456

Y二一43456

By=43456

Y二一43456

Y=-0043456

y二+—43456

CY二一4s4ss

Y=-43456

Y二一0043456

y=-43456

Dy二一43456

Y=-0043456

y=00043456

产十43456

6以下C程序正确的运行结果是_D—

main()

{inty=2456;

printf(z,y=%3o\n\y);

print(〃y=%8o\n",y);

printf(,,y=%#8o\n,,»y);

}

Ay=2456

y=2456

y=########2456

By=4630

y=4630

Y二与科附###4630

CY=2456

y=2456

y=02456

DY=4630

y=4630

y=04630

7以下C程序正确的运行结果是_A.

main()

(longy=23456;

printf(*y=%3x\nx,y);

printf(〃y=%8x\n",y);

printf(〃y=%#8x\n",y);

)

Ay=5ba0

y=5ba0

y=Ox5baO

By=5ba0

y=5ba0

y=0x5ba0

CY=56a0

y=56a0

y=0x5ba0

DY=5ba0

y=5ba0

y二####5ba0

8若x,y均定义为int型,z定义为double型,以下不合法的scanf函数

调用语句是_D—

scanf(u%d%lx,%le〃,&x,&y,&z);

B)scanf(a%2d*%d%Ifa,&.x,&y,&z);

scanf(&x,&y,&z);

scanf("%x%o%6.2f“,&x,&y,&z);

9已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20”

和B,当从第一列开始输入数据时,正确的数据输入方式是_A—

intal,a2;charcl,c2

scanf(,%d%c%d%c”,&al,&cl,&a2,&c2);

A)10A20B<CR>B)10A20B<CR>

C)10A20B<CR>D)10A20B<CR>

10已有定义intx;floaty;且执行scanf(飞3d%f〃,&x,&y〃)语句,若从

第一列开始输入数据12345678<回车),则x的值为[1],y的值为[2].BB

[1]A)12345B)123C)45D)345

[2]A)无定值B;45.0000000678.000000D)123.000000

11已有如下定义和输入语句,若要求al,a2,cl,c2的值分别为10,20,A和

B,当从第一列开始输入数据时,正确的数据输入方式是_D—

Intal,a2;charcl,c2;

scanf("%d%d",&al,&a2);

scanf(a%c%c",&cl,&c2);

A)1020AB<CR>

B)1020<CR>

AB<CR>

C1020AB<CR>

D)1020AB<CR>

12已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为

main()

(inta;floatf;

printf(z,\nInputnumber:");

输入语句

printf(〃\nf二%f,a二%d\n〃,f,a);

)

Inputnumber:4.52<CR>

scanf(,z%d,%f〃,&a,&f);

scanf("%f,&a);

scanf(a%d%f,z,&a,&f);

scanf(&f,&a);

13根据定义和数据的输入方式,输入语句的正确形式为—B—。

已有定义:float

数据的输入方式:4.52

3.5

scanf(a%f,&fl,&f2);

scanf(&fl,&f2);

scant(,'%3.2f%2.lf〃,&fl,&f2);

scanf("%3.2f%2.lf〃,&fl,&⑵;

14阅读以下程序,当输入数据的形式为25,13,10<CR>正确的输出结果为

main()

(intx,y,z;

scant(w%d%d%d“,&x,&y,&z);

printf(〃x+y+z二%d\n",x+y+z);

)

Ax+y+z=48

x+y+z=35

x+z=35

不确定值

15阅读以下程序,若运行结果为如下形式,输入愉出语句的正确内容是_B

main()

{intx;floaty;

printf(z,enterx,y:“)

输入语句

输出语句

)

输入形式enterx,y:23.4

输出形式xiy=5.40

Ascanf("%d,%f,&x,&y);

printfC\nx+y=%4.2f〃,x+y);

scanf&x,&y);

printf("\nx+y=%4.2fx+y);

scanf(&x,&y);

prire("\nx+y=%6.If”,x+Y);

scanf(a%d%3.If〃,&x,&y);

printf(〃x+y=%4.2f“,x+Y)

16以下说法正确的是_D

输入项可以为一实型常量,如scanf(〃%f〃,3.5);

只有格式控制,没有输入项,也能进行正确输入,如scanfCa=%dfb=

%d");

当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scarf

(〃%4.2f“,&f);

当输入数据时,必须指明变量的地址,如scanf

17根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确

形式应该为_A

mainO

(charchi,ch2,ch3;

输入语句

printf(<<%c%c%cchi,ch2,ch3);

}

输入形式ABC

输出形式AB

Scanf(<<%c%c%c,,«&chl,&ch2,&ch3);

a

scanf(%cf%c,%c”,&chl,&ch2,&ch3)

scanf(“%c%c%c“,&chl,&ch2,&ch3)

D)scanf("%c%c”,&chl,&ch2,&ch3);

18有输入语句:scanf("a=%d,b或d,c=%d〃,&a,&b,&c);为使变量a的值

为l,b为3,C为2,从键盘输入数据的正确形式应当是_D—

132〈回车>

1,3,2<回车)

a=lb=3c=2〈回车>

a=l,b=3,c=2<回车)

19以下能正确地定义整型变量a,b和c并为其赋初值5的语句是_A—

inta=b=c=5;

inta,b,c=5;

a=5,b=5,c=5;

a=b=c=5;

20已知ch是字符型变量,下面不正确的赋值语句是_A—

ch='a+b*;

ch='\0

ch='7'+'9';

ch=5+9;

21已知ch是字符型变量,下面正确的赋值语句是_B—

ch='123

ch=;

ch='\08

Ch二〃\〃;

22若有以下定义,则正确的赋值语句是_B—

inta,b;

floatx;

a=l,b=2

B)b++;

C)a=b二5

D)b=int(x);

23设x,y均为float型变量,则以下不合法的赋值语句是_B—

A++x;

B)y=(x%2)/10;

x*=y+8;

x=y=0;

24设x,y和z的值是均为int型变量,则执行语句x=(y=(z=10)+5)一5;后,

x、y和z的值是—A

x=10

y=15

z=10

x=10

y=10

z=10

x=10

y=lo

z=15

x=10

y=5

z=10

25设有说明:doubley=0.5,z=1.5;intx=10,则能够正确使用C语言库函

数的赋值语句是_D—

z=exp(y)+fabs(x);

y=loglO(y)+pow;y);

z=sqrt(y一z);

x=(int)(atant2(double)x,y)+exp(y-0.2));

第四章课后习题逻辑运算和判断选取控制

1逻辑运算符两侧运算对象的数据类型_D—

只能是0或1

只能是0或非0正数

只能是整型或字符型数据

可以是任何类型的数据

2以下关于运算符优先顺序的描述中正确的是_C—

关系运算符〈算术运算符〈赋值运算符〈逻辑与运算符

逻辑与运算符〈关系运算符〈算术运算符〈赋值运算符

赋值运算符(逻辑与运算符〈关系运算符〈算术运算符

算术运算符〈关系运算符〈赋值运算符〈逻辑与运算符

3下列运算符中优先级最高的是_B—

AX

B)+

0&&

D)!=

4能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”

的表达式是_C―

A)(x>=l)&&(x<=10)&&(x>=200)&&(x<=210)

B)(x>=l)||(x<=10)||(x>=200)||(x<=210)

C)(x>=l)&&(x<=10)||(x>=200)&&(x<=210)

D)(x>=l)||(x<=10)&&(x>=200)||(x<=210)

5表示图中坐标轴上阴影部分的正确表达式是_C―

//////II///////I

//////II///////I

abc

A)(x<=a)&&.(x>=b)&&(x<=c)

B)(x<=a)||(b<=&&x<=c)

C)(x<=a)|(x>=b;&&(x<=c)

D)(x<=a)&&(b<=x<=c)

6判断char型变量ch是否为大写字母的正确表达式是_C—

A)'A'<二ch*'Z'B)(ch>='A*)&(ch<='Z')

C)(ch>='A9&a(ch<=CCD)('A'<=ch)AND('Z'>=ch)

7设x,y和Z是int型变量,且x=3,y=4,z=5,则下面表达式中值为。的是

A)'x,&&'v'

x<=Y

x||Y+Z&&y-z

D)!((x<y)&&!z|11)

8已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是_C

0

语法错

01

D)“假〃

9若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达

式的值为“假则以下不能满足要求的表达式是_C—

A%z-=1

B)!(A%2==0)

C)!(A%2)

A%2

10设有:inta=l,b=2,c==3,d=4,m=2,n=2;执行(m=a〉b)&&(n二c>d)后

n的值为_B-

A)1

B)2

03

D)4

11判断char型变量cl是否为小写字母的正确表达式为_D—

A)<a<<=cl<='z'

C)('a*>=01)||{'z,<=cl)

(cl>=a)&&(cl<=z)

D)(cl>='a〈二'z')

12以下程序的运行结果是_B—

#include“stdio.h〃.

main()

{inta,b,d=241;

a=d/100%9;

b=(-l)&&(-l);

printf("%d,%da,b);

}

A)6,1

B)2,1

C)6,0

D)2,0

13执行以下语句后a的值为[l],b的值为[2]CA

int

a,b,c;

a=b=c;

++a||++b&&++c;

【1】A)错误B)0C)2D)1

[2]A)1B)2C)错误D)0

M执行以下语句后a的值为[l],b的值为[2]BA

inta=5,b=6,w=l,x=2,y=3,z=4;

(a=w>x)&&(b=y>z);

[11A)5B)0C)2D)1

[2]A)6B)0C)1D)4

15以下不正确的述语句形式是_C—

if(x>y&&x!=y);

if(x==y)x+=y;

if(x!=y)scanf("%d”,&x),elsescanf("%d“,&y);

if(x<y){x++;y+-;}

16下列运算符中优先级最低的是[1],优先级最高的是[2]AC

A)?:

B)&&

0+

D)!=

17已知intx=10,y=20,z=30;以下语句执行后X,y,Z的值是_B

if(x>y)

z=x;z=y;y=Z;

A)x=10,y=20,z=30

x=20,y=30,z=10

B)x=20,y=30,z=30

x=20,y=30,z=20

18以下if语句语法正确的是_B.

A)if(x>0)

printf(4<%f,x)

elseprintf(w%f",~x);

B)if(x>0)

{x=x+Y,printf(“斌〃,x);)

elseprint*(“培f〃,-x);

if(x>0)

{x=x+y;printx);

elseprintf("%f”,-x);

if(x>0)

{x=x+y;print(x)}

elseprintf("%f”,"x);

19请阅读以下程序:

mai()

{inta=5,b=0,c=0;

if(a=b+c)printf:〃***\n〃);

elseprintf(〃$$$r\n”);

以上程序_D—

有语法错不能通过编译

输出关“

可以通过编译但不能通过连接

输出$$$

20以下程序的运行结果是_C—

main()

{int巾=5;

if(m++>5)printf{"%d\n",m);

elseprintf(m―);}

A)4

B)5C)6

D)7

21当a=l,b=3,c=5,d=4时,执行完下面一段程序后x的值是B

if(a<b)

if(c<d)x=l;

else

if(a<c)

if(b<d)x=2

elsex=3;

elsex=6

elsex=7;

A)1

B)2c)3D)6

23以下程序的输出结果是_C—

main()

{inta=100,x=10,\-20,ok1=5,ok2=0;

if(x<y)

if(Y!=10)

if(!okl)

a=l;

else

if(ok2)a=10;

a二一1;

printf("%d\n",a);

)

A)1

B)0

一1

值不确定

24以下程序的输出结果是_B—

inain()

{intx=2,y=l,z=2:

if(x<Y)

if(Y<0)­z=O;

elsez+=l;

printf("%d\n'',z);}

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

25为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:else

子句总是与_B配对。

缩排位置相同的if

其之后最近的if

其之前最近的if

同一行上的if

26以下不正确的语句为B

if(x>Y);

if(x=y)&&(x!=0)x+=y;

if(x!=Y)scanf(z,%d",&x);elsescarf(",&Y);

if(x<Y){x十+;y++;}

27

请阅读以下程序:

#include<stdio.h>

main()

{floata,b;

scanf("%f",&a);

if(a<0.0)b=0.0:

elseif((a<0.5)&&(a!=2.0))b=l.0/(a+2.0;;

elseif(a<10.0)b=l.0/x;

elseb=10.0;

printf(^%f\n",Y);

若运行时输入2.(X回车>,则上面程序的输H结果是_B—

A)0.000000B)0.500000

01.000000

D)0.250000

28若有条件表达式(exp)?a++:b---,则以下表达式中能完全等价于表

达式(exp)的是_B—

A)(exp-0)

C)(exp==l)

B)(exp!=0)

D)(exp!=l)

29若运行时给变量x输入12,则以下程序的运行结果是_A—

main()

{intx,Y;

scanf(〃版T,&X);

y=x>12?x+10:x-12;

printf("%d\n",Y);}

0

22

12

10

30以下程序的运行结果是_D—

main(){

Int

k=4,a=3,b=2,c=l;

printf(〃\n%d\n〃,k<a?k:c<b?c:a);}

4

3

2

1

31执行以下程序段后,变量a,b,c的值分别是_B—

Int

x=10,Y=9;

Inta,b,c;

a=(-x==Y++)?-x:++y;

b=x++;

c=y;

a=9,b=9,c=9

a=8,b=8,c=10

a=9,b=10,c=9

a=l,b=ll,c=10

32若w,x,y,z,ml均为int型变量,则执行下面语句后的m值是_A—

w=l;x=2;y=3;z=4:

m=(w<x)?w:x;

m=(m<Y)?m:y;

m=(m<Z)?m:z;

A)1

B)2

C)3

D)4

33若w=l,x=2,y=3,z=4,则条件表达式wG?w:y<z?y:z的值是_D

4

3

2

1

34执行以下程序段后的输出结果是_C—

intw=3,z=7,x=10;

printf("%d\n,>»x>10?x+100:x-10);

printf("%d\n",w++||z++);

printf(u%d\n!w>z);

printf(w%d\n”,w&&z);

A)0111

mi

0101

0100

第五章课后习题循环控制

1设有程序段

intk=10;

while(k=0)k=k—1;

则下面描述中正确的是_C_。

while循环执行10次

循环体语句一次也不执行

循环是无限循环

循环体语句执行一次

2设有以下程序段

intx=0,s=0;

while(!x!=0)s十=++x;

printf("%d”,s);

则—B—

运行程序段后输出0

程序段中的控制表达式是非法的

B运行程序段后输出1

D程序段执行无限次

3语句while"E);中的表达式!E等价于_A.

E==o

E!=l

E!=0D)E==l

4下面程序段的运行结果是A

a=l;b=2;c=2;

while(a<b<c){t=a;a=b;b=t;C-;}

printf(a%d,%d,%d”,a,b,c);

A)l,2,0

B2,1,0c)l,2,1D)2,1,1

5下面程序段的运行结果是_D。

X=Y二0;

while(x<15)Y++,x+=++Y;

printf(a%d,%d”,Y,x);

A)20,7B)6,12C)20,8D)8,20

6下面程序段的运行结果是Intn=0;C

while(n++<=2);printfC%dz,,n);

A)2B)3

04

有语法错

7设有程序段B

t=0;

while(print(〃*〃))

t十+;

if(t<3)break;}

下面描述正确的是

A其中循环控制表达式与0等价

C其中循环控制表达式是不合法的

其中循环控制表达式与'。'等价

以上说法都不对

8下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一

对相等数对结束循环,请选择填空。B

#include<stdio.h>

main()

inta,b,t;

scanf(&a,&b);

while([l])

if(a>b)

{t=a;a=b;b=t;}

printf("%d,%d\n",a,b);

scanf(z,%d%d“,&a,&b);

[1]A)!a=b

B)a!=b

C)a-=bD)a=b

9下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和

小写字母的个数n,并输出m、n中的较大者,请选择填空。CA

#include<stdio.h>

mainO

{intm=0,n=0;

charc;

vvhi}e(([l])!=9

{if(C>='A'&&.c<='Z9m++;

if(c>='a'&&c〈二'z9n++;}

printf(//%d\n,\n<n?[2]);

)

[1]A)c=getchar()B)gctchar()C)c=getchar()Dscanfc;

[2]A)n:rnB)m:nC)m:mDn;n

10下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中

Y变成A,z变成B。请选择填空。DC

#include<stdio.h>

main()

charc;

while((c=getchar())!='\n)

{if(C>='a'&&c〈;'z')

{Li)

if(c>>Z,&&c<='Z'+2)

[2]}

printf("%c”,c);

)

)

[1]c+=2c-=32c=c+32+2c-=30

[2]c=,B'c=?A'c-=26c=c+26

11下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,

请B

选择填空。

#include<stdio.h>

main()

{inta,max=0;

scanf("%d&a);

while([l])

{if(max<a)max=a:

scanf(u%d&a);

}

printf("%d",max);

}

a==0

a

!a==l

!a

12下面程序的运行结果是_C_o

#include<stdio.h>

main()

{intnum=0;

while(num<=2)

{'num+十;

printf('num);

}

)

1

12

123

1234

13若运行以下程序时,从键盘输入2473<CR>(<CR>表示车),则下面程

序的运行结果是A

#include<stdio.h>

main()

{intC;

whi1e((c=getchar0)!=<\n,)

switch(c一*2')

{case0:putchar(c+4);

case1:putchar:c+4);

case2:putchar:c+3);

Case3:putchar[c+2);

break;

printf("\n");}

668977

668966

66778777

6688766

14C语言中while和do-while循环的主要区别是A_«

do一while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格

do-while允许从外部转到循环体内

do-whi1e的循环体不能是复合语句

15以下能正确计算1X2X3X〃〃〃X1O的程序段是C

do(i=l;s=l;

S=s*i;

i++;

}while(i<=10);

do{i=l;s=0;

S=S*1;

i++;

}while(i<=10);

i=l;s=l;

do{

S=S*1;

i++;

}while(i<=10);

i=l;s=0;

do{

S=S*1;

i++;

}while(i<=10);

16以下程.序段_C_。

x二一1,

do

{x=x*x;}

while(!x);

是死循环B)循环执行二次

循环执行一次D)有语法错误

17以下描述中正确的是C

由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内

不能使用复合语句

do-while循环由do开始,用while结束,在while(表达式)后面不能写分

在do-while循环体中,一定要有能使while后面表达式的值变为零(”假")

的操作

do-while循环中,根据情况可以省略whi1e

18若有如下语句B

i=3;

do{printf(〃刎\n〃,x一=2);}while(!(---x));

则上面程序段

输出的是1B)输出的是1和一2C)输出的是3和0D)是死循环

19下面程序的功能是计算正整数2345的各位数字平方和,请选择填空BC

#include<stdia.h>

main()

{intn,sum=0;

n=2345;

do{sum=sum+[l];

n=[2];

}whilc(n);

printf("sum=%d〃,sum)

}

[1]An%10B(n%10)*(n%10)Cn/10D(n/10)*(n/10)

[2]An/1000Bn/100Cn/10Dn%10

20下面程序是从键盘输入学号.然后输出学号中百位数字是3的学号,输入

0时结束循环。请选择填空。BC

include<stdio.h>

mainO

(longintnum;

scanf(&口,n);

cio{if([l])printf(,z%dnum);

scanf('",&num);

}while([2]);

[1]A)num%100\10==3

num/100%10—3

Num%10/10==3

num/10%10==3

[2]!Num

Mun>0==0

!num=0

!num!=0

21等比数列的第一项a=l:公比q=2,下面程序的功能是求满足前n项和

小于100的最大n,请选择填空。BD

#include<stdio.h>

mainl()

{inta,g,n,sum};

a=l,g=2;n=sum=C:

do{

[11

++n;a*=g;

}while(sum<100):

[2];

Printf(“%d\n”,n);

)

[1]A)sum+十

B)surn+=a

C)sum=a+aD)a+=sum

[2]

n—n—2

n=n

n++

D)n-=1

22下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13

和11整除。请选择填空。B

^includeCstdio.h>

main()

{int=0,J,k;

do{i++;k=316一13*x;}while([l]);

i=k/11;

printf(z,316=13*%d+ll*%di,i);

)

[11A)k/ll

B)k%llC)k/ll==O

k/ll==O

23下面程序的运行结果是D

nclude<stdio.h>

main()

{inty=10;

do{Y---;}while(----Y);

printf("%d\n",Y---);

}

A)—1B)1c)8D)0

24若运行以下程序时,从键盘输入ADescriptorGCR>(«R>表示回车),则

下面程序的运行结果是_D。

#include<stdio.h>

main()

{charc;

intv0=0,vl=0,v2=0;

do{

switch(c=getchar())

{case'atease'A

case'e—ease'E

ease'1tease'I

case'otease0

ease'utease'U4:vl+=l;

default:VO+=1;v2+=l;

)

}while(C!=,\n');

print(〃vo=%d,vl=%d,v2二%d\n",vo,VI,v2);

)

V0=7,vl=4,v2=7B)vo=8,vl=4,v2=8C)C)VO=11,Vl=4,V2=ll

Vo=12,vl=4,v2=12

25下面程序的运行结果是_B。

#include<stdio.h>

main()

{inta=1,b=10:

do

{b一=a;a++;}while(b---<o);

printf(〃a=%d,b=%d\nz/,a,b);

)

A)a=3,b=mB)a=2,b=8C)a=i,b=一1

a=4,b=9

26下面有关for循环的正确描述是D_。

for循环只能用于循环次数已经确定的情况

for循环是先执行循环体语句,后判断表达式

在for循环中,不能用break语句跳出循环体

for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

27对for(表达式1;表达式3)可理解为B_o

for(表达式1;0;表达式表

C)for(表达式1;表达式1;表达式3)B)for(表达式1;表达式1;表达

式3)

for(表达式1;表达式3;表达式3)

28若t为整型变量,则以下循环执行次数是B

for(i=2;i==0;)printf(〃机1〃,i—);

无限次B)0次C)1次D)2次

29以下for循环的执行次数是_C。

for(X—0,y=0;(Y=123)&&(x<4);x十+);

是无限循环B)循环次数不定C)执行4次

执行3次

30以下不是无限循环的语句为A_。

for(y=0,x=l;x>++Y;x=i+十)i=x

for(;;x十+=1};

while(1){x++;}

for(i=10;;i---)sum+=i}.

31下面程序段的运行结果是_C。

for(y=l;y<10;)Y=((x=3*Y,x+1),x—1);

printfCx=%d,y=%dw,x,y);A)x=27,Y=27B)x=12,y=13C)x=15,

y=14D)x=y=27

32下面程序段的运行结果是D

for(x=3;x<6;x++)printf((x%2)?(a**%dz,):(a##%d\n"),x);

A)**3B)##3

##4**4

**5##5

C)##3

**4##5

D)**3##4

**5

33下列程序段不是死循环的是C

Inti=l

while(l)

{i=i%100+1;

if(i>100)break;

}

for(;;);

intk=0

do{十+k;}whi1e(k>=0);

ints=36

while(s);

一S;

34执行语句for(i=l;i十十〈4;);后变量i的值是C

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

35有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2

零件;若分成7个零件一组,则多3个零件:若分成9个零件一组,则多5

零件。下面程序是求这堆零件总数,请选择填空。D

#include<stdio.h>

main()

{inti;

for(i=100;l<200:l++)

if((l-2)%4==0;

if(!((i—3)%7)J

if([l])

printf("%d",i);

)

A)1%9=5B)1%9:=5C)(i-5)%9!=0D)1%9==5

36

下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空D

#include<stdi}.h>

main()

{inti,sum=0;for(i=l;i<=5;i++)

sum十二i;

printf(/z%dsum);)

A)(int)(l/7)==i/7B)(int)l/7==l/7c)l%7=0D)i%7=0

37下面程序的功能是计算1,至10之间的奇数之和及偶数之和。请选择填

空。BC

#include<stdio.h>

main()

{int,b,c,i;

a=c=0:

for(i=0;i<=10:t-=2)

{a十二i;

⑴;

c+=b;

}

printf”偶数之和或d\n〃,a);

printf"奇数之和=%d\n",[2]);

(1]A)b=i——B)b=i+lc)b=i++D)b=i-i

[2]A)c—10B)cC)c-llD)c-b

38下面程序的运行结果是_B。

#include<stdio.h>

main()

{inti;

far(i=l;i<=5;i+-)

switch(i%5)

{caseO:printf("*“);break;

case1:printf("#a);break;

default:printf(?\n〃);

case2:printf(〃&〃);}

)

#&&&*

#&&&*

#&&&*

#&*

39下面程序的运行结果是_D。

#include<stdio,h>

main()

intx,i;

for(i=l;i<=100:i++)

{x=i;

if(十十x%2==0)

if(++x%3==o)

if(+十x%7==o>

printf("%d",x);

}

A)3981

B)4284

02668D)2870

40下面程序段的功能是计算i。。。!的末尾含有多少个零。请选择填空。

(提示:只要算出1000!中含有因数5的个数即可)C

for(k=0,i=5;i<=1000;i+=5)

(m二i;

while([1])(k+-;m=m/5;}

(1]A)m%5=0B)m=m%5=0C)m%5==0D)m%5!

=0

41下面程序的功能是求算式xyz十yzz=532中x,y,z的值(其中xyz和

yzz分别表示一个三位数),请选择填空。CD

#include<stdio.h>

main()

{intx,Y,z,i,result=532;

for(x=l;x<10;x+-)

for(y=l;y<10;Y+-)

for(II];z<10;z+-)

{i=100*x+10*y+z-100*y+10*z+z;

if([2])printf(〃x=%d,Y=%d,z=%d\n,z,x,Y,z);

)

}

[1]A)z=x

z==l

z==0

z=y

[2]A)i/result==l

i=result

C)i!=resultD;i==result

42下面程序是输出一个正整数等差数列的前十项,此数列前四项之和及之

积分别是26和880,请选择填空。CA

#include<stdio.h>

main()

(inta,d,i,s,f,x;/*a是第一项*/

for(a=l;a<30;ah)

for(d=l;[1];d十十)

{S=O;f=l;x=a;

for(i=l;i<=4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论