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

下载本文档

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

文档简介

C语言习题集

习题一

一.填空题

1.C程序是由()构成的,一个C程序中至少包含()。

因此,()是C程序的基本单位。

2.C程序注释是由()和()所界定的文字信息组成的。

3.函数体一般包括()和()。

二.判断题

1.一个C程序的执行总是从该程序的main函数开始,在main函数最后结

束。【】

2.main函数必须写在一个C程序的最前面。【】

3.一个C程序可以包含若干的函数。【】

4.C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行

不起任何作用。但是可以增加程序的可读性。【】

5.C程序的注释只能是一行。[]

6.C程序的注释不能是中文文字信息。【】

8.可以使用TurboC来编译和连接一个C程序。【】

9.可以使用TurboC来运行一个C程序。【】

10.可以使用TurboC来实时调试(即动态调试)一个C程序。【】

三.简答题

1.写出一个C程序的基本结构。

2.简要叙述使用TurboC2.0编译和运行一个程序的步骤。

四.编程题

1.提高题:参照课本例1.1,试编写一个C程序,输出如下信息。(提示:

使用键盘上的一些符号)。

2.提高题:试编写一个C程序,输出如下信息。

试试看,可以输出其他组合图案吗?

习题二

选择题

1、合法的字符常量是。

A)''t'B)''A"C)‘a'D)"32'

2、合法的字符常量是。

A)''084'B)''84'C)'ab'D)'\x43'

3、是C语言提供的合法的数据类型关键字。

A)FloatB)signedC)integerD)Char

4、在以下各组标识符中,合法的标识符是。

(1)A)B01B)table_lC)0_tD)k%

(2)A)Fast_B)voidC)pblD)<book>

(3)A)xy_B)longdoubleC)*pD)CHAR

(4)A)sjB)IntC)_xyD)w_y23

5、属于合法的C语言长整型常量的是。

A)5876273B)OLC)2E10D)(long)5876273

6、下面选项中,不是合法整型常量的是。

A)160B)-OxcdgC)-01D)-0x48a

7、判断intx=Oxaffbc;x的结果是。

A)赋值非法B)溢出C)为affbD)为ffbc

8、下面选项中,均是合法浮点数的是。

A)+le+lB)-.60C)123eD)-e3

A)5e-9.4B)12e-4C)1.2e-.4D).8e-4

A)03e2B)-8e5C)+2e-lD)5.e-0

9、在C语言中,要求参加运算的数必须时整数的运算符是。

A)/B)*C)%D)=

10、在C语言中,字符型数据在内存中以形式存放。

A)原码B)BCD码C)反码D)ASCII码

11、下列语句中,符合语法的赋值语句是。

A)a=7+b+c=a+7;B)a=7+b++=a+7;

C)a=(7+b,b++,a+7);D)a=7+b,c=a+7:

12、是非法的C语言转义字符。

A)''b'B)l\0xfC)''037'D)'\"

13、对于语句:4(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,是正确的。

A)语法错误B)f为5.0C)f为0.0D)f为2.0

14、与代数式(x*y)/(u*v)不等价的C语言表达式是。

A)x*y/u*vB)x*y/u/vC)x*y/(u*v)D)x/(u*v)*y

15、在C语言中,数字029是一个。

A)八进制数B)十六进制数C)十进制数D)非法数

16、C语言中整数一8在内存中的存储形式为。

A)1111111111111000B)100000000001000

C)000000000001000D)1111111111110111

17、对于charcx='\039’;语句,正确的是。

A)不合法B)ex的ASCII值是33

C)cx的值为四个字符D)cx的值为三个字符

18、若intk=7,x=12;则能使值为3的表达式是。

A)x%=(k%=5)B)x%=(k-k%5)

C)x%=k-k%5D)(x%=k)-(k%=5)

19、为了计算s=10!(即10的阶乘),则s变量应定义为。

A)intB)unsignedC)longD)以上三种类型均可

20、以下所列的C语言常量中,错误的是。

A)OxFFB)1.2e0.5C)2LD)''72'

21、假定x和y为double型,则表达式x=2,y=x+3/2的值是。

A)3.500000B)3C)2.000000D)3.000000

22、设变量n为float型,m为int类型,则以下能实现将n中的数值保留小

数点后两位,第三位进行四舍五入运算的表达式是。

A)n=(n*100+0.5)/100.0B)m=n*l00+0.5,n=m/l00.0

C)n=n*100+0.5/100.0D)n=(n/l00+0.5)*100.0

23、以下合法的赋值语句是。

A)x=y=100B)d------C)x+yD)c=int(a+b)

24、下选项中不属于C语言的类型是。

A)signedshortintB)unsignedlongint

B)unsignedintD)longshort

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

A)(x=y=6,x+y,x+l)B)(x=y=6,x+y,y+l)

C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)

26、在16位C编译系统匕若定义longa;,则能给a赋40000的正确语句

是。

A)a=20000+20000:B)a=4000*10:

C)30000+10000;D)a=4000L*10L;

二.填空题

1.在C语言中(以16位PC机为例),一个char数据在内存中所占字节数

为,其数值范围为;•个int数据在内存中所占字节数

为—,其数值范围为—;一个long数据在内存中所占字节数为一,

其数值范围为;一个float数据在内存中所占字节数

为,其数值范围为。

2.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第

一个字符必须为O

3.字符常量使用一对界定单个字符,而字符串常量使用一对来

界定若干个字符的序列。

4.在C语言中,不同运算符之间运算次序存在的区别,同一运算符之

间运算次序存在_______的规则。

5.设x,i,j,k都是int型变量,表达式x=(i=4,j=16,k=32)计算后,x的值为一。

6.设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4为。

7.设a=2,b=3,x=3.5,y=2.5〃lJ(float)(a+b)/2+(int)x%(int)y为。

8.数学式子的C语言表达式为o

9.数学式子的C语言表达式为。

10.已知:chara='a',b='b',c='c',i;则表达式i=a+b+c的值为。

11.已知血a=12,n=5;则:表达式运算后a的值各为。

a+=a

a-=2

a*=2+3

a/=a+a

n%=(n%=2)

a+=a-=a*=a

12.设inta;floatf;doublei;则表达式10+'a,+i*f值的数据类型是。

13.若a为int型变量,则表达式(a=4*5,a*2),a+6的值为。

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

15.已知a,b,c是•个十进制数的百位,十位,个位,则该数的表达式是。

16.定义:doublex=3.5,y=3.2;则表达式(int)x*0.5的值是,表达式

y+=x++的值是o

17.定义:intm=5,n=3;则表达式m/=n+4的值是,表达式

m=(m=l,n=2,n-m)的值是,表达式m+=m=(m=l)*(n=2)的值是■>

18.表达式5%(-3)的值是,表达式-5%(-3)的值是。

19.若a是int变量,则执行表达式a=25/3%3后,a的值是。

20.数学式子的C语言表达式为:。

三.判断题

1.在C程序中对用到的所有数据都必须指定其数据类型。【】

2.一个变量在内存中占据一定的存储单元。【】

3.一个实型变量的值肯定是精确的。【】

4.对几个变量在定义时赋初值可以写成:inta=b=c=3;1]

5.自增运算符(++)或自减运算符(-)只能用于变量,不能用于常量或表达式。

(]

6.在C程序的表达式中,为了明确表达式的运算次序,常使用括号“()

[1

7.%运算符要求运算数必须是整数。【】

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

数。【】

9.在C程序中,逗号运算符的优先级最低。【】

10.C语言不允许混合类型数据间进行运算。【】

四.简答题

1.为什么C语言的字符型可以进行数值运算?

2.简述、和“a”的区别。

3.程序:intm=12;m=15;为什么整型变量m的值在运算后不是当初的12,

而是15?

4.将下面各数用八进制和十六进制数表示:

十进制32—1—327682002-1280

八进制

十六进制

6.华氏温度F与摄氏温度c的转换公式为:c=(F-32)*5/9,则floatc,F;

c=5/9*(F-32)是其对应的C语言表达式吗?如果不是,为什么?

五.程序阅读题

1.写出以下程序运行的结果。

main()

{

charcl=,a\c2=,b\c3=,c\c4=,\101',c5='116’;

printf("a%cb%c\tc%c\tabc\n,,,cI,c2,c3);

printf(t€\t\b%c%c”,c4,c5);

}

2.写出以下程序运行的结果。

main()

{

inti,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printffl%d,%d,%d,%d,,,i,j,m,n);

)

六.编程题

1.假设m是一个三位数,则写出将m的个位,十位,百位反序而成的三位

数(例如:123反序为321)的C语言表达式。

2.已知intx=10,y=12;写出将x和y的值互相交换的表达式。

习题三

一.选择题

LC语言的程序一行写不下时,可以。

A)用逗号换行B)用分号换行

C)在任意一空格处换行D)用回车符换行

2.putchar()函数可以向终端输出一个。

A)整型变量表达式值B)实型变量值

C)字符串D)字符或字符型变量值

3.执行下列程序片段时输出结果是。

unsignedinta=65535;

printf("%d”,a);

A)65535B)-1C)-32767D)1

4.执行下列程序片段时输出结果是。

floatx=-1023.012

printfC\n%8.3f,,,,x);

printf(“%10.3f',x);

A)1023.012,-1023.012B)-1023.012,-1023.012

C)1023.012,-1023.012D)-1023.012,-1023.012

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

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

intal,a2;charcl,c2;

scanf(tt%d%c%c,,,&al,&a2,&c1,&c2);

A)10A20BZB)10A20B/

C)10A20BZC)10A20B/

6.对于下述语句,若将10赋给变量kl和k3,将20赋给变量k2和k4,则

应按方式输入数据。

intkl,k2,k3,k4;

scanf("%d%d”,&kl,&k2);

scanfC4%d,%d,,,&k3,&k4);

A)1020/B)1020/C)10,20/

D)1020/1020/1020Z10,20/10,20/

7.执行下列程序片段时输出结果是。

intx=13,y=5;

printf("%d”,x%=(y/=2));

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

8.下列程序的输出结果是。

main()

{intx=023;

}

A)17B)18C)23D)24

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

从第一列开始输入数据时,正确的输入方式是。

intal,a2;charcl,c2;

scanfft%d%d,,,&al,&a2);

scanfC%c%c,,,&cl,&c2);

A)1020ABZB)1020/

AB/

C)1020ABZD)1020AB/

10.执行下列程序片段时输出结果是。

intx=5,y;

y=2+(x+=x-H-,x+8,-H-x);

printfT%d”,y);

A)13B)14C)15D)16

1L若定义x为double型变量,则能正确输入x值的语句是。

A)scanf("%f',x);B)scanf("%F',&x);

C)scanff'%l「,&x);D)scanf("%5.1F',&x);

12.若运行时输入:12345678/,则下列程序运行结果为。

main()

{inta,b;

scanfC4%2d%2d%3dM,&a,&b);

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

)

A)46B)579C)5690D)出错

13.已知i,j,k为int型变量,若从键盘输入:1,2,3〈回车,,使I的值为1,j

的值为2,k的值为3,以下选项中正确的输入语句是。

A)scanfC'%2d%2d%2d”,&i,&j,&k);

B)scanf(4t%d_%d_%d,,,&i,&j,&k);

C)scanfT%d,%d,%d”,&i,&j,&k);

D)scanf(tti=%d,j=%d,k=%d,,,&i,&j,&k);

14.若intx,y;doublez;以下不合法的scanf函数调用语句是。

A)scanf(4U%d%lx,%le,,,&x,&y,&z);

B)scanf(tt%2d*%d%lf,,&x,&y,&z);

C)scanf(tt%x%*d%o,,,&x,&y);

D)scanf{tt%x%o%6.2f\&x,&y,&z);

15.有输入语句:scanfiTa=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,

b的值为3,c的值为2,则正确的数据输入方式是。

A)132/B)1,3,2/

C)a=lb=3c=2/D)a=l,b=3,c=2/

二.填空题

I.一个c程序由若干个文件组成,而一个这样的文件可以由若干个

和以及组成。

2.C语句可以分为,一,—,和—等5种类型。

3.C控制语句有种。

4.一个表达式要构成一个C语句,必须。

5.复合语句是用一对界定的语句块。

6.printf函数和scanf函数的格式说明都使用字符开始。

7.scanf处理输入数据时,遇到下列情况时该数据认为结束:(1),

(2),(3)=

8.已有inti,j;floatx;为将-10赋给i,12赋给j,410.34赋给x;则对应以下

scanf函数调用语句的数据输入形式是。

9.C语言本身不提供输入输出语句,其输入输出操作是由来实现的。

10.一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预

编译命令:»

三.程序阅读题

1.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,cl='A,,c2=,a\问

在键盘上如何输入?

main()

{inta,b;

floatx,y;

charcl,c2;

scanf(t€a=%db=%d,,,&a,&b);

scanf("%f%e”,&x,&y);

scanff%c%c,,,&cl,&c2);

}

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

main()

{inty=3,x=3,z=l;

printf(u%d%d\n”,(++x,y++),z+2);

}

3.写出以下程序的输出结果。

main()

{inta=12345;

floatb=-198.345,c=6.5;

printf(ua=%4d,b=%-10.2e,c=%6.2f\n,,,a,b,c);

}

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

main()

{intx=-2345;

floaty=-12.3;

printfT%6D,%06.2F”,x,y);

}

5.写出以下程序的输出结果。

main()

{inta=252;

printf(“a=%oa=%#o\n,\a,a);

printf(<<a=%xa=%#x\n,,,a,a);

}

6.写出以下程序的输出结果。

main()

{intx=12;doublea=3.1415926;

printfCt%6d##,%-6d##\n,\x,x);

printf(“%14.101f##\n",a);

)

四.程序填空题

1.下列程序的输出结果是16.00,请填(1)空使程序完整。

main()

{inta=9,b=2;

floatx=[1],y=l.l,z;

z=a/2+b*x/y+1/2;

printfC<%5.2f\n,,,z);

}

五.编程题

1.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来。

2.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。想得到

以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

a=3b=4c=5

x=l.200000,y=2.400000,z=-3.600000

x+y=3.60y+z=-1.20z+x=・2.40

u=51274n=128765

cl='a'or97(ASCII)

c2Tb'or98(ASCII)

3.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,

圆柱体积。用scanf输入数据,输出计算结果;输出时要求有文字说明,取

小数点后2位数字,请编写程序。

4.编程序:用getchar函数读入两个字符给cl,c2,然后分别用putchar和printf

函数输出这两个字符。并思考以下问题:(1)变量cl,c2应定义为字符型或整

型?或两者皆可?(2)要求输出C1和C2值的ASCII码,应如何处理?用

putchar函数还是printf函数?(3)整型变量与字符型变量是否在任何情况

下都可以互相替代?如:

charcl,c2与intcl,c2

是否无条件地等价?

习题四

一.选择题

1.逻辑运算符两侧运算对象的数据类型。

A)只能是0或1B)只能是0或非0正数

C)只能是整型或字符型数据D)可以是任何类型的数据

2.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的

要求。

A)x%2==0B)!x%2!=0C)(x/2*2-x)=0D)!(x%2)

3.以下程序片段。

intx=2,y=3;

prints);

A)什么都不输出B)输出为:***x=2

C)输出为:###y=2D)输出为:###y=3

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

式是。

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

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

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

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

5.C语言对嵌套if语句的规定是:else总是与。

A)其之前最近的if配对B)第一个if配对

C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对

6.设:inta=l,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为。

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

7.下面是错误的if语句(设intx,a,b;)

A)if(a=b)x++;B)if(a=<b)x++;

C)if(a-b)x++;D)if(x)x++;

8.以下程序片段。

main()

{intx=0,y=0,z=0;

if(x=y+z)

else

printf("###");

}

A)有语法错误,不能通过编译B)输出:***

C)可以编译,但不能通过连接,所以不能运行D)输出:###

9.对下述程序,是正确的判断。

main()

{intx,y;

scanf("%d,%d",&x,&y);

if(x>y)

x=y;y=x;

else

x-H-;y++;

printfT%d,%d”,x,y);

}

A)有语法错误,不能通过编译B)若输入3和4,则输出4和5

C)若输入4和3,则输出3和4D)若输入4和3,则输出4和5

10.若w=l,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的值是。

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

11.下述表达式中,一可以正确表示xSO或xNl的关系。

A)(x>=l)11(x<=0)B)x>=l|x<=0

C)x>=l&&x<=0D)(x>=1)&&(x<=0)

12.下述程序的输出结果是。

main()

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

if(++a>011++b>0)

++c;

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

)

A)0,0,0B)1,1,1C)1,0,1D)0,1,1

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

main()

{intx=-l,y=4,k;

k=x-H-<=0&&!(y—<=0);

printf(“%d,%d,%d'',k,x,y);

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

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

main()

{intx=l,y=O,a=O,b=O;

switch(x){

case1:switch(y){

case0:a-H-;break;

case1:b-H-;break;

)

case2:a++;b-H-;break;

case3:a-H-;b-H-;

}

printfC'a=%d,b=%d,\a,b);

}

A)a=l,b=OB)a=2,b=lC)a=l,b=lD)a=2,b=2

15.下述程序的输出结果是。

main()

{inta,b,c;

intx=5,y=10;

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

b=y++;c=x;

printf(4t%d,%d,%d,,,a,b,c);

)

A)6,9,7B)6,9,6C)7,9,6D)7,9,7

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

if(a<b)

if(c<d)x=l;

else

if(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;

elsex=7;

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

17.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功

能上与其他三个语句不等价。

A)if(a)SI;elseS2;B)if(a==0)S2;elseSI;

C)if(a!=O)SI;elseS2;D)if(a==O)SI;elseS2;

18.若inti=0;执行下列程序后,变量i的正确结果是。

switch(i){

case9:i+=l;

case10:i+=l;

case11:i+=l;

default:i+=l;

»

A)10B)11C)12D)13

19.若有说明语句inti=5,j=4,k=6;floatf;则执行f=(ivj&&i〈k)?i:(jvk)?j:k;语句

后,f的值为o

A)4.0B)5.0C)6.0D)7.0

20.若有定义:inta=3,b=2,c=l;并有表达式:①a%b,②a>b>c,③b&&c+l,④

c+=l,则表达式值相等的是O

A)①和②B)②和③C)①和③D)③和④

二.填空题

1.C语言提供6种关系运算符,按优先级高低它们分别

是,,,,,等。

2.C语言提供三种逻辑运算符,按优先级高低它们分别

是f,O

3.设a=3,b=4,c=5,写出下面各逻辑表达式的值。

表达式表达式运算后的值

a+b>c&&b=c

!(a>b)&&!c||1

!(a+b)+c-1&&b+c/2

4.写出数学式子的C语言表达式。

5.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表

达式。

6.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表

达式:O

7.已知IA=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值

是o

8.有intx=3,y=4z=5;则表达式(x&&y)=(xUz)的值为。

9.若有x=l,y=2,z=3,则表达式(x〈y?x:y)=zH的值是。

10.执行以下程序段后,a=—,b=—,c=—o

intx=10,y=9;

inta,b,c;

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

b=x++;

c=y;

三.判断题

Lif语句中的表达式不限于逻辑表达式,可以是任意的数值类型。【】

2.switch语句可以用if语句完全代替°【)

3.switch语句的case表达式必须是常量表达式。【】

4.if语句,switch语句可以嵌套,而且嵌套的层数没有限制。【】

5.条件表达式可以取代if语句,或者用if语句取代条件表达式。【】

6.switch语句的各个case和default的出现次序不影响执行结果。[)

7.多个case可以执行相同的程序段。【】

8.内层break语句可以终止嵌套的switch,使最外层的switch结束。[]

9.switch语句的case分支可以使用{}复合语句,多个语句序列。【】

lO.switch语句的表达式与case表达式的类型必须一致。【】

四.简答题

1.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

2.请将以下语句改成switch语句。

if((s>0)&&(s<=10))

if((s>=3)&&(s<=6))x=2;

elseif((s>l)&&(s>8))x=3;

elsex=l;

elsex=0;

五.程序阅读题

1.若运行时输入100/,写出以下程序的运行结果。

main()

{inta;

scanf("%d”,&a);

printf("%s”,(a%2!=0)?“No":“Yes”);

}

2.写出以下程序的运行结果。

main()

{inta=2,b=7,c=5;

switch(a>0){

case1:switch(b<0){

case1:printR"@”);break;

case2:printfC!");break;

)

case0:switch(c=5){

case1:pritnfp*");break;

case2:printfT#");break;

default:printf("#");break;

default:printf("&'');

}

printff'W");

»

六.程序判断题

1.下面程序将输入的大写字母改写成小写字母输出,其他字符不变;请判断

下面程序的正误,如果错误请改正过来。

main()

{charc;

c=getchar();

c=(c>='A'||c〈=Z)?c-32:c+32;

printf(u%c,,,c);

)

2.下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的

值,例如输入3+5/得到结果8;请判断F面程序的正误,如果错误请改正

过来。

main()

{

floatx,y,r;

charop;

switch(op){

case:r=x+y;

case'・':r=x+y;

case:r=x+y;

case:r=x+y;

}

printf("%f',r);

}

七.程序填空题

1.根据以下函数关系,对输入的每个x值,计算出相应的y值,请填(3)空使

程序完整。

main()

intx,c,m;

floaty;

scaufT%d”,&x);

if([I])c=-l;

elsec=[2];

switch(c){

case-1:y=0;break;

case0:y=x;break;

case1:y=10;break;

case2:

case3:y=-0.5*x+20;break;

default:y=-2;

)

if([3])

printf(uy=%f;y);

else

printff'error!”);

}

2.以下程序输出x,y,z三个数中的最小值,请填(2)空使程序完整。

main()

{intx=4,y=5,z=8;

intu,v;

u=x<y?[1];

v=u<z?[2];

printfCt%d,\v);

)

八.编程题

1.有三个整数a,b,c,由键盘输入,输出其中最大的数。

2.编程输入整数a和b,若大于100,则输出百位以上的数字,否则输出

两数之和。

4.给出一百分制成绩,要求输出成绩等级,ATBTC〈D:E,090分以上为,A"

80—89分为'B170—79分为,C',60—69分为'D',60分以下为,

5.提高题:给一个不多于5位的正整数,要求:①求出它是几位数;②分别

打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出123。

习题五

一.选择题

1.下面程序段

intk=2;

while(k=0){printf(“%d”,k);k・・;}

则下面描述中正确的是o

A)while循环执行10次B)循环是无限循环

C)循环题语句一次也不执行D)循环体语句执行一次

2.下述程序段中,与其他程序段的作用不同。

A)k=l;B)k=l;

while(1){Repeat:

s+=k;s+=k;

k=k+l;if(++k<=100)

if(k>100)break;gotoRepeat

}printfT\n%d”,s);

printf("\n%d”,s);

C)intk,s=O;D)k=l;

for(k=l;k<=100;s+=-H-k);do

printf(44\n%d,,,s);s+=k;

while(++k<=100);

printfC4\n%d,,,s);

3.以下程序段的循环次数是

fbr(i=2;i==0;)printf("%d'',i・・);

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

4.下面程序的输出结果是

main()

{charc='A';

intk=0;

do{

switch(c++){

case'A':k++;break;

case'B':k-;

case'C':k+=2;break;

case'D':k%=2;continue;

case'E':k*=10;break;

default:k/=3;

}

k-H-;

}while(cv'G');

printf("k=%d”,k);

A)k=3B)k=4C)k=2D)k=0

5.下面程序的输出结果是。

main()

{intx=9;

for(;x>0;x-){

if(x%3==0){

printf("%d”,・・x);

continue;

}

A)741B)852C)963D)875421

6.以下不是死循环的程序段是。

A)inti=100;B)for(;;);

while(1){

i=i%1004-1;

if(i>100)break;

}

C)intk=0;D)ints=36;

do{++k;}while(k>=0);while(s);—s;

7.下述程序段的运行结果是

inta=l,b=2,c=3,t;

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

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

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

8.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的

个数,选择填空。

main()

{intm=0,n=0;

charc;

while(([])!

(

if(c>='A'&&cv='Z')m++;

if(c>=,a,&&cv='z')n++;

}

}

A)c=getchar()B)getchar()C)c=getchar()D)scanf("%c”,&c)

9.下述语句执行后,变量k的值是。

intk=l;

while(k-H-<10);

A)10B)11C)9D)无限循环,值不定

10.下面程序的输出结果是。

main()

{intk=0,m=0,i,j;

for(i=0;i<2;i-H-){

for(j=0;j<3;j++)

k++;

k-=j;

}

m=i+j;

printf("k=%d,m=%d”,k,m);

}

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

11.下面for循环语句。

inti,k;

for(i=0,k=-l;k=l;i++,k++)

printfT***");

A)判断循环结束的条件非法B)是无限循环

C)只循环一次D)一次也不循环

12.语句while(!E);括号中的表达式!E等价于。

A)E==0B)E!=lC)E!=0D)E=1

13.以下是死循环的程序段是o

A)for(i=l;;){

if(i-H-%2=0)continue;

if(i-H-%3=0)break;

}

B)i=32767;

do{if(i<0)break;}while(++i);

C)fbr(i=l;;)if(++I<10)continue;

D)i=l;while(i—);

14.执行语句fbr(i=l;i++<4;);后变量i的值是o

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

15.以下程序段。

x=-l;

do

{x=x*x;}

while(!x);

A)是死循环B)循环执行2次C)循环执行1次D)有语法错误

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

择填空。

main()

{inta,max=O;

scanR“%d",&a);

while([)){

if(max<a)max=a;

scanf("%d”,&a);

}

printf("%d”,max);

}

A)a=0B)aC)!a==lD)!a

17.以下不是死循环的语句是。

A)for(y=9,x=1;x>-H-y;x=i++)i=x;

B)for(;;x++=i);

C)while(1){x++;}

D)fbr(i=10;;i-)sum+=i;

18.下面程序段的运行结果是。

x=y=O;

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

printf("%d,%d",y,x);

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

19.以下for循环的执行次数是o

for(x=0,y=0;(y=123)&&(x<4);x++);

A)无限循环B)循环次数不定C)4次D)3次

20.若运行以下程序时,输入2473/,则程序的运行结果是。

main()

{intc;

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

switch(c-'2'){

case0:

case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

default:putchar(c+2);break;

)

printf("\n”);

A)668977B)668966C)66778777D)6688766

二.填空题

l.C语言三个循环语句分别是一语句,—语句和—语句。

2.至少执行一次循环体的循环语句是。

3.循环功能最强的循环语句是。

5.程序段

for(a=l,i=-l;-l<i<l;i++)

{a++;printf(tt%2d,,,a);};

printfT%2d”,i);

的运行结果是O

三.判断题

1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。【】

2.在实际编程中,do-while循环完全可以用fbr循环替换。【】

3.continue语句只能用于三个循环语句中。【】

4.在不得已的情况下(例如提高程序运行效率),才使用goto语句。【】

5.语句标号与C语言标识符的语法规定是完全一样的。【】

6.for循环的三个表达式可以任意省略,while,do-while也是如此。【】

7.do・while允许从外部转到循环体内。【】

8.while的循环控制条件比do-while的循环控制条件严格。【】

9.do-while循环中,根据情况可以省略while。1]

lO.do-while循环的while后的分号可以省略。[]

四.程序阅读题

1.写出下面程序运行的结果。

main()

{intx,i;

for(i=l;i<=100;i-H-){

x=i;

if(-H-x%2=0)

if(++x%3==0)

if(++x%7==0)

printfC4%d”,x);

}

}

2.写出下面程序运行的结果。

main()

{inti,b,k=O;

fbr(i=l;i<=5;i++){

b=i%2;

while(b—=0)k++;

}

printf(64%d,%d,,,k,b);

)

3.写出下面程序运行的结果。

main()

{inta,b;

for(a=l,b=l;a<=100;a++){

if(b>=20)break;

if(b%3==l){b+=3;continue;}

b-=5;

}

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

)

4.写出下面程序运行的结果。

main()

{intk=l,n=263;

do{k*=n%10;n/=10;}while(n);

printf(<<%d\n,,,k);

)

5.写出下面程序运行的结果。

main()

{inti=5;

do{

switch(i%2){

case4:i—;break;

case6:i—;continue;

}

i-;i-;

printf("%d”,i);

}while(i>0);

)

6.写出下面程序运行的结果。

main()

{intij;

for(i=0;i<3;i++,i++){

for0=4;j>=O;j-){

if((j+i)%2){

j";

printf("%d,"j);

continue;

}

--i;

j-;

printfC%d,”,j);

7.写出下面程序运行的结果。

main()

{inta=10,y=0;

do{

a+=2;y+=a;

if(y>50)break;

}while(a=14);

printfC4a=%dy=%d\n,,,a,y);

}

8.写出下面程序运行的结果。

main()

{intij,k=19;

while(i=k-l){

k-=3;

if(k%5==0){i++;continue;}

elseif(k<5)break;

i++;

)

printf(ui=%d,k=%d\n,\i,k);

)

9.写出下面程序运行的结果。

main()

{inty=2,a=l;

while(y—!=-l)

do{

a*=y;

a-H-;

}while(y—);

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

}

10.写出下面程序运行的结果。

main()

{inti,k=0;

for(i=l;;i++){

k++;

while(k<i*i){

k++;

if(k%3==0)gotoloop;

}

}

loop:

printf(t4%d,%d\n,,,i,k);

}

六.程序填空题

1.下述程序用“碾转相除法”计算两个整数m和n的最大公约数。该方法的基

本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就

是最大公约数。否则,将除数作为新的被除数,余数作为新的除数,继续计

算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。

main()

{intm,n,w;

scanf("%d,%d",&m,&n);

while(n){

w=【1】;

m=[2];

n=[3];

}

printf("%d”,m);

)

2.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,

请填(3)空使程序完整。

main()

{intn,k=l,s=0,m;

for(n=l;n<=100;n++){

k=l;s=0;

while([2]){

k*=m%10;

s+=m%10;

if(k>s)printf("%dd”,n);

)

)

3.下面程序段的功能是计算1000!的末尾有多少个零,请填(1)空使程序完

整。

main()

{

inti,k;

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

{m=i;

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

)

4.下面程序接受键盘上的输入,直到按/键

温馨提示

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

评论

0/150

提交评论