《c语言习题册及答案(63页).doc》由会员分享,可在线阅读,更多相关《c语言习题册及答案(63页).doc(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-c语言习题册及答案-第 62 页第3章 课后练习及作业习题指导(参考答案)作业01 C语言基础知识一、选择题1.C语言程序的基本单位是( )。 A)函数 B)过程 C)子程序 D)子例程2.下列个选项中,合法的C语言关键字是( )。 A)integer B)sin C)string D)void3.下列选项中,不是C语言提供的合法关键字的是( )。 A)switch B)cher C)default D)case4.以下选项中合法的用户标识符是( )。A)int B)a# C)5mem D)_2435.C语言程序一行写不下时,应该( )。 A)用回车换行 B)在任意空格处换行 C)用分号换行
2、 D)用逗号换行6.在C程序中,可以作为用户标识符的一组标识符是( )。 A)void define WORD B)as_b3 _224 Else C)switch wer case D)4b DO SIG7.在C语言中,下列合法的字符常量是( )。 A)039 B)x76 C)ab D)o8.以下说法正确的是( )。 A)C语言程序是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序是从main()函数开始执行的 D)C语言程序中的main()函数必须放在程序的开始部分9.( )是构成C语言程序的基本单位A)函数 B)变量 C)子程序 D
3、)语句10.一个C语言程序总是从( )开始执行的A)主过程 B)主函数 C)子程序 D)主程序11.以下叙述不正确的是( ) A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面12.C语言规定:在一个源程序中,main()函数的位置( ) A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后13.以下叙述正确的是( ) A)在C程序中,main()函数必须位于程序的最前面 B)C程序中的每行中只能写一条语句 C)C语言本身没有输入输出语句D)在对一个C程
4、序进行编译的过程中,可发现注释中的拼写错误14.C语言中标识符只能由字母、数字和下划线3种字符组成,且第一个字符( )A)必须为字母 B)必须为下划线C)必须为字母或下划线 D)可以是字母、数字和下划线中任意一种字符二、填空题 main函数 开始执行的。 顺序结构 、 选择结构 和 循环结构 。 保留字 、 用户定义标识符 和预定义标识符3类。4.在C语言中,整数可用 十 进制、 八 进制和 十六 进制三种。5.一个C语言程序的开发过程包括:编辑、 编译 、连接和运行4步。 main函数 。7.在一个C源程序中,注释部分两侧分界符分别为 /* 和 */ 。8.C语言中的标识符只能由3种字符组成
5、,它们是 字母 、 数字 和 下划线 。程生成的3种文件及扩展名为 .c 、 .obj 和 .exe 。作业02 数据类型及运算一、选择题1. C语言中简单数据类型有( )。 A)整型、实型、逻辑型 B)整型、字符型、逻辑型C)整型、实型、字符型 D)整型、实型、字符型、逻辑型2. 以下选项中正确的整型常量是( )。A)-37 B)32,758 C)3 2 6 D)6.3. 以下选项中合法的C语言字符常量是( )。A)t B) ”A” C) 67 D)A4以下选项中不正确的实型常量是( )。 A)123 B)1e4 C5不合法的十六进制数是( )。A)0xff B) 0X11 C) 0x1g
6、D)0Xabc6以下选项中合法的C语言赋值语句是( )。A)a=b=34 B)a=34,b=34 C) -i D)m=(int)(x+y);7在C语言中,char 型数据在内存中是以( )形式储存的。A)原码 B) 补码 C) ASCII码 D)反码8. 以下( )是不正确的转义字符A) B) ” C) 020 D)09. 若有代数式3aebc,则不正确的C语言表达式是( )。 A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*310. 在C语言中,要求参加运算的数必须是整数的运算符是( )。 A)% B)/ C)! D)*11. 若已定义x和y为do
7、uble类型,则表达式“x=1,y=x+3/2“的值是( )。A)1 B)2 C)2.0 12.若变量已正确定义并赋值,符合C语言语法的表达式是( )。A)a=a+1 B)a=7+b+c,a+ C)int(12.3/4) D)a=a+7=c+b13.若a为整型变量,则下列语句( )。a=-2L;printf(“%dn”,a);A)赋值不合法 B)输出值为-2 C)输出值不为确定值 D)输出值为214.对于条件表达式(M)?(a+):(a-),其中表达式M等价于( )。A)M= =0 B)M= =-1 C)M!=0 D)M!=115.若有定义:int x=3,y=2;float a=2.5,b=
8、3.5;则下面表达式的值为( )。(x+y)%2+(int)a/(int)bA)1.0 B)1 C)2.0 D)2和n均是int型变量,且x初值为12,n初值为5,则执行下面表达式后x值为( )。x%=(n%=2)A)0 B)1 C)2 D)3型,则表达式(a=2,b=5,a+,b+,a+b)的值为( )。A)7 B)8 C)9 D)1018.设int x=1,y=1;表达式(!x|y-)的值是( )。A)0 B)1 C)2 D)-119.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( )。A)1 B)2 C20.若变量a,i已正确定义,且i已正确赋值,则合法的语句是
9、( )。A)i=int(a) B)+i; C)a=a+=5 D)a=int(i)21.若执行以下程序段后,c3的值是( )。int c1=1,c2=2,c3; c3=1.0/c2*c1;A)0 B)0.5 C)1 D)222.能正确表示逻辑关系”a10或a0”的C语言表达式是( )。A)a=10 or a=0|a=10&a=10|ab)&(n=cd)运算后,n的值为( )。A)0 B)1 C)2 D)326.假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(wx)? w:x; m=(my)? m:y; m=(mb后,变量a的值为( )。A)0 B)1
10、C)4 D)530.判断char类型数据c1是否为大写字母的最简单且正确的表达式为( )。A)A=c1=A)&(c1=Z)C)(A=c1) D)(c1=A)&(c1=Z)二、填空题1.若a是int型变量,则执行表达式a=25/3%3后a的值是 2 。2.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n+后x的值为 10 ,n的值为 6 。3.若x和y都是double型变量,且x初值为3.0,y初值为2.0,则表达式pow(y,fabs(x)的值为 。4.表达式pow(2.8,sqrt(double(x)值的数据类型为 double 。5.若a是int型变量,则表达式(a=4
11、*5,a*2),a+6的值为 26 。6.若有定义int m=5,y=2;则执行表达式y+=y-=m*=y后y的值为 -16 。7.已知int a=15,b=240;则表达式(a&b)&b|b的结果为 1 。8.表达式8.0*(1/2)的值为 。9.字符串“ab034x79”的长度为 5 。10.若s是int型变量,且s=6,则s%2+(s+1)%2表达式的值为 1 。11.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。12.若有定义:char c=010;则变量c中包含的字符个数为 1 。i 为int整形变量且赋值为6,则运
12、算i+后表达式的值为 6 变量i的值是 7 。14.若二进制a是00101101,若想通过异或运算ab使a的高4位取反,低4位不变,则二进制b是 11110000 。15.表达式3&4的值为 0 ,表达式3|4的值为 7 ,表达式3&4的值为 1 。三、读程序写结果1.如下程序的运行结果是( 33 )。#includevoid main() int y=3,x=3,z=1;printf(“%d%dn”,(+x,y+),z+2); 2.以下程序的输出结果是( 6 )。#includevoid main() int a=5,b=4,c=6,d;printf(“%dn”,d=ab?(ac? a:c)
13、:(b); 3.在C语言中,如果下面的变量都是int类型,则输出的结果是( 7 )。sum=pad=5;pad=sum+,pad+,+pad;printf(“%dn”,pad);4.以下程序的输出结果是( 9,10 )。#includevoid main() int i=010,j=10;printf(“%d,%dn”,+i,j-); 作业03 基本语句一、选择题1.若有说明:double a;则正确输入语句是( )。A)scanf(“%if”,a) B)scanf(“%lf”,&a)C)scanf(“%if”,&a) D)scanf(“%lo”,&a)2.合法的C语言赋值语句是( )。A)a
14、=b=58 B)k=int(a+b) C)a=58,b=58 D)-i;3.若变量已确定定义,以下程序段输出结果是( )。x=5.16894;printf(“%fn”,(int)(x*1000+0.5)/(float)(1000)”); C) 5.168000 D)4.若有以下程序其输出结果是( )。 int a=0 ,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%dn”,a,b,c); A) 3,0,-10 B) 0,0,5 C) -10,3-10 D) 3,0,35.以下程序其输出结果是( )。 #include void main() int
15、 a=2 , b=5; printf(“a=%d,b=%dn”,a,b); A) a=%2,d=%5 B) a=2,b=5 C) a=%d,b=%5 D) a=%d,b=%d6.以下程序段输出结果是( )。 float a=3.1415; printf (“|%f|n”,a,b); A) |3.1415| B) | 3.0| C) | 3| D) |3. |7.以下程序段输出结果是( )。 float a=57.666; printf(“*%*n”,a); A)*0000057.66 B) *57.66* C) *00000.57.67* D) *57.57*8.若变量c定义为float型,当
16、从终端输入283.1900后按回车,能给变量c赋以283.19的输入语句是( )。A)scanf(“%f”,c); B)scanf(“%”,&c);C)scanf(“%d”,&c) D)scanf(“%8f”,&c);9.若有以下定义语句,则输出结果是( )。int u=010,v=0x10,w=10;printf(“%d,%d,%dn”,u,v,w);A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,1010.下面程序的输出是( )。 #include void main() int k=11; printf(“%d,%o,%xn”,k,k,k); A)12,11,1
17、1 B)11,13,13 C)11,013,0xb D)11,13,b11.下面程序的输出结果是( )。#include main() int x=5,y=3; printf(“%dn”,y=x/y); A)0 B)1 C)3 D)不确定的值12.若变量已正确定义,下面程序段的输出结果是( )。/与3类似x=5.238794;printf(“%fn”,(int)(x*1000+0.5)/(float)1000);A)5.239000 B)输出格式说明与输出项不匹配,输出无定值C)5.238000 D)5.24 13.下面语句的输出结果是( )。print(|%|n,3461.45);A) |6
18、1.45000| B)|3461.450| C)|3461.45000| D)|3461.4500|14.执行下面程序中的输出语句后,a的值是( )。#include void main() int a; printf(%dn,(a=3*5,a*4,a+5); A)65 B)20 C)15 D)1015.以下程序不用第三个变量,实现将两个数进行对调的操作,请填空( )。#includemain() int a,b; scanf(%d%d,&a,&b); printf(a=%d b=%d,a,b); a=a+b;b=a-b;a=_; printf(a=%d b=%dn,a,b); A) a=b
19、B)a-b C)b*a D)a/b16.以下程序的输出结果是( )。#includevoid main() int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(%fn,x); A)27.000000 B)27.500000 C17.若变量都已正确说明,则以下程序段输出结果是( )。a=2;b=3;printf(“ab?*a=%d;#b=%d”,a,b); ?A) 没有正确的输出格式控制 B)输出为:*a=2C)输出为:#b=2 D)输出为:*a=2#b=218.若已定义int a=256;,执行语句printf(%x,a);的结
20、果是( )。A)100 B)256 C)ffe D)ff19.执行下列程序时输入1234567,程序的运行结果为( )。#includevoid main( ) int x,y; scanf(%2d%2d,&x,&y); printf(%dn,x+y); A)17 B)46 C)15 D)920.已知int a,;int b;float c;double d;,则表达式a*b=c-d结果为( )型。?A) Double B)int C)float D)char21.已知int a,b;,用语句scanf(%d%d,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是( )。A) , B)
21、空格 C)回车 D)Tab键22.语句printf(%d,(a=2)&(b=-2);的输出结果是( )。A) 无输出 B)结果不确定 C)-1 D)123.下述程序的输出结果是( )。#includevoid main() printf(%f,2.5+1*7%2/4); A)2.50000 B)2.750000 C二、 填空题1. 变量i、j、k已定义为int类型并有初值0,用以下语句进行输入:scanf(“%d”,&j);scanf(“%d”,&k);当执行以上输入语句,从键盘输入(代表回车键):12.3 则变量i、j、k的值分别是 0,12,0 。2. 复合语句在语法上被认为是 一条语句
22、,空语句的形式是 ; 。3. C语句句尾用 ; 结束。4. 运行如下程序:#include void main() int a,b,c; scanf(“%d,%d,%d”,&a,&b,&c); printf(“%d,%d,%d”,a,b,c); 运行时,输入3、4、5,输出的值为 3,4,5 。 界定单个字符,而字符串常量使用一对 来界定若干个字符的序列。6.设x=2.5,a=7,y=4.7, 则x+a%3*(int)(x+y)%2/4为 。7.自增运算符(+)或自减运算符(-)只能用于 变量 ,不能用于 常量或表达式 。8.表达式5%(-3)的值是 2 ,表达式-5%(-3)的值是 -2 。
23、-200,25i=-200,j=25i=-200 j=25三、读程序写结果1. 下列程序的输出结果是( )。#includevoid main() int i=-200,j=25;printf(%d,%d,i,j);printf(i=%d,j=%dn,i,j);printf(i=%dn j=%dn,i,j); 2. 使用强制转换方法将正整数转换成字符。本程序的执行结果是( )。#includevoid main() char c;int i; printf(输入一个正整数(小于255):); scanf(%d,&i); c=(char)i; printf(%c的ASCII码为%dn,c,i);
24、 3. 下列程序的输出结果是(560分钟9小时20分钟 )。#includevoid main() int i=560,h,m; h=i/60; m=i-60*h; printf(%d分钟%d小时%d分钟n,i,h,m); 4. 下列程序的输出结果是( *3.140000,3.142* )。#includevoid main() printf(*%f,%*n,3.14,3.1415); 5.已有定义int d=-2;执行以下语句后的输出结果是( )。printf(*d(1)=%d*d(2)=%3d*d(3)=%-3d*n,d,d,d); *d(1)=-2*d(2)= -2*d(3)=-2 *p
25、rintf(*d(4)=%x*d(5)=%6x*d(6)=%-6x*n,d,d,d);*d(4)=fffffffe*d(5)=fffffffe*d(6)=fffffffe*6.在scanf()函数调用语言,可以在格式字符和%号之间加上一个星号,他的作用是(跳过对应的输入数据);当输入以下数据时:10 20 30 40回车(此处 代表空格),下面语句的执行结果是( 103040 )。int a1,a2,a3;scanf(%d%*d%d%d,&a1,&a2,&a3);printf(%d%d%d,a1,a2,a3);7.执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5,y=
26、71.82,c1= A ,c2=a ,正确的数据输入形式是( )。#includevoid main() int a,b;float x,y;char c1,c2; scanf(a=%db=%d,&a,&b); a=3b=7 scanf(x=%fy=%f,&a,&b); scanf(c1=%cc2=%c,&c1,&c2); c1=A,c2=aprintf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c,a,b,x,y,c1,c2); 四、程序填空1、给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:2,在程序中定义的变量
27、名要与公式的变量相同)。 例如:输入圆的半径值:19.527,输出为。 注意:部分源程序给出如下。 试题程序: #include void main()double x;printf(Enter x: );scanf(%lf,【1】); &x*【2】/2.0); x*x五、编程题1.请编写程序其功能是:将两个两位的正整数a、b合并成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 例如:当a=45,b=12,调用该函数后,c=5241。 2.假设m是一个三位数,则输出将m的个位,十位,百位反序而成的三位数(例如:123
28、反序为321。作业04 选择结构一、选择题1.下面的程序( )。#include void main() int x =3,y =0,z =0;if(x =y +z) printf( * * * *);else printf(# # # #); A)有语法错误不能通过编译 B)输出 * * * * C)可以通过编译,但是不能通过连接,因而不能运行 D)输出# # # #2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( )。void main( ) int x;scanf( %d , &x);if(x+5) printf( %d,x);else printf( %dn, x-)
29、; A)7和5 B)6和3 C)7和4 D)6和43.以下程序的输出结果是( )。#include void main( ) int a =-1,b =4,k; k =(+a0)&! (b- -=10or a =10| a =10& &a =10|a =05.假定所有变量以正确说明,下列程序段运行后x的值是( )。 a=b=c=0;x =35; if(!a)x-; else if(b); if(c) x=3; else x=4;A)34 B)4 C)35 D)36.表示关系XYZ的c语言表达式为 ( )。A)(X =Y)&(Y =Z) B)(X =Y)AND(Y =Z)C)(X =Y =Z)
30、D)(X =Y)&(Y =Z)7.如下程序的输出结果是( )。#include void main() int a,b,c =246; a=c/100%9; b=(-1)&(-1); printf( %d,%dn,a,b); A)2,1 B)3,2 C)4,3 D)2, -18.当a=1、b=2、c=5、d=5时,执行下面的程序后,x的值是( )。 if(ab) if(cd)x=1; else if(ac) if(b=0|b=0)& (a0|b=0&b=0)& (a0&b0)& (a+b010.若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是( )。 A)switch(a
31、+b); B)switch(a +b) case 1:y =a +b;break; case 3: case 0:y =a -b;break; case 1:y =a +b;break; case 3:y =b a,break; C)switch a D)switch(a b) case c1:y =a -b;break; default:y =a *b;break; case c2:x =a *b;break; case 3:case 4:x=a +b;break;default: x =a +b; case 10:case 11:y =a -b;break; 11.下列关于switch语句
32、和break语句的结论中,正确的是( )。A)break语句是switch语句中的一部分 B)在switch语句中可以根据需要使用或不使用break语句C)在switch语句中必须使用break语句 D)break语句只能用于switch语句中12.设有说明语句“int a =1,b=0;”则执行以下语句后,输出为( )。 switch(a) case 1: switch(b) case 0:printf( * * 0 * * );break; case 1:printf( * * 1 * * );break; case 2:printf( * * 2 * * );break; A)* * 0
33、 * * B)* * 0 * * * * 2 * *C)* * 0 * * * * 1 * * * * 2 * *D)有语法错误13.为了避免在嵌套的条件语句ifelse中产生二义性,C语言规定:else子句总是与( )配对。A)缩排位置相同的if B)其之前最近的ifC)其之后最近的if D)同一行上的if14.有定义语句:int a =1 ,b =2,c =3,x;,则以下选项中各程序段执行后,x的值不等于3的是( )。A)if(c a) x =1; B)if(a3) x =3; else if(b a) x =2; else if(a 2) x =2; else x =3; else x =1;C)if(a 3) x =3; D)if(ab) x =b; if(a 2) x =2; if(bc) x =c; if(a 1) x =1; if(c b c) printf( %dn,d); else if (c-1= d) = 1); printf( %dn,d+ 1);else printf( %dn,d + 2);执行后输出结果是( )。A)2 B)3 C)4 D)编译时有错,无结果1 x 016.有一函数:y = 0 x =0 ,以下程序段中不