《C/C++程序设计教程》05_06学期复习练习题第1章计算机程序设计与算法略第2章C语言程序设计概述略第3章数据类型、运算符和表达式选择题(1)以下选项中属于C语言的数据类型是【】A)复数型B)逻辑型C)双精度型D)集合型双精度型属于C语言的数据类型。因此C是正确答案。(2)在C语言中,不正确的int类型的常数是【】A)32768B)0C)037D)0xAF32767超出了int型的取值范围,因而是不正确的。0、037(八进制整数)、0xAF(十六进制整数)都在int的取值范围内。因此A是正确答案。(3)C语言中运算对象必须是整型的运算符是【】A)%B)/C)=D)〈=C语言规定求余运算中的运算对象必须是整型。因此A是正确答案。(4)以下所列的C语言常量中,错误的是【】A)0xFFB)1.2e0.5C)2LD)'\72'0xFF为十六进制整数,2L为长整型整数,'\72'为转义字符常量。1.2e0.5中,e的右侧写的是小数,而C语言规定指数形式的浮点型数据中,e(E)的右侧只能是整数。因此B是正确答案。(5)C语言中的基本数据类型包括【】。A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型C)整型、字符型、逻辑型D)整型、实型、字符型逻辑型不是基本数据类型,因此D是正确答案(6)不正确的字符串常量是【】。A)'abc'B)12'12C)0D)字符串常量是双引号括起来的字符序列,因此A是正确答案(7)以下关于C语言标识符的描述中,正确的是【】。A)标识符可以由汉字组成B)标识符只能以字母开头C)关键字可以作为用户标识符D)Area与area是不同的标识符C语言规定标志符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线且标识符中大小写字母被认为是不同的字符,关键字不能作为标志符,因此D是正确答案(8)以下不正确的转义字符是【】。A)’\\’B)’0101’C)’\n’D)’\x1f’除B)’0101’外,其他的都是正确的转义字符,因此B是正确答案(9)C语言中,以下【】不是正确的常量。A)543210LB)05078C)-0x41D)123450开头表示八进制数,其各位数码不应≥8,因此B是正确答案(10)请读程序片段:inti=65536;printf(%d\n,i);上面程序片段的输出结果是【】A)65536B)0C)有语法错误,无输出结果D)–1由于整型数据的最大值是216-1=65535,当i=65535时刚好最大,i=65535+1时进位溢出,使得i=0,因此B是正确答案填空题(1)设有intx=11;则表达式(x++*1/3)的值是【】由于表达式中x++的优先级别高,因此首先处理x++,取出x的值11进行运算,11*1等于11,11/3的结果为整型数据3。(2)若有定义:inta=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是【】c=(a-=(b-5));c=(a%11)+(b=3);影响b值的赋值语句只有最后一个表达式中的b=3,因此b中的值是3。(3)设有以下变量定义,并已赋确定的值charw;;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为【】。当进行混合运算时,因为表达式中包含有double型数据,且没有强制类型转换,因此最后结果为双精度型(double型)。(4)若有以下定义,则计算表达式y+=y-=m*=y后的y的值是【】。intm=5,y=2;由于赋值语句是先右后左,所以上面的表达式相当于:m=m*y;y=y-m;y=y+y;所以最后结果为-16(5)若s是int型变量且s=6,则下面表达式的值为【】。s%2+(s+1)%2由于s%2=0,(s+1)%2=(6+1)%2=1;(6)若a是int型变量,则计算表达式后a的值为【】。a=25/3%3由于”/”和”%”的优先级一样,按照从左到右的规则,25/3=8,8%3=2,所以值为2(7)字符串“AB”在机器中占【】个字节。由于在字符串在内存中的存储是AB\0后面的\0是系统自动加上的,每个字符占一个字节,所以答案为3(8)若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)/4的值是【】。由于c语言规定:int型和float型混合运算时都向高精度方向转换,a%3=1;int(x+y)/4=7/4=1;所以x+1*1=2.500000+1=3.500000第4章顺序结构程序设计思考题1.基本顺序结构语句主要有哪些?2.表达式和表达式语句操作结果有何不同?3.从程序控制的角度看复合语句是单一的语句吗?选择题填空题1.以下符合C语言语法的赋值表达式是【】A)d=9+e=d+9B)d=9+e,f=d+9C)d=9+e,e++,d+9D)d=9+e++=d+72.下面程序运行时的输出结果是【】main(){inta=5;printf(\na=%d,++a+2);}A)a=6B)8C)a=5D)a=83.putchar函数可以向终端输出一个【】。A)整型变量值B)实型变量值C)字符串D)字符或字符变量4.以下程序时,从键盘输入25,13,10回车,则输出结果是【】。main(){inta1,a2,a3;scanf(“%d,%d,%d”,&a1,&a2,&a3);printf(“a1+a2+a3=%d\n”,a1+a2+a3);}A.a1+a2+a3=48B.a1+a2+a3=25C.a1+a2+a3=10D.不确定5.若有以下定义和语句charc1='b',c2='e';printf(%d,%c\n,c2-c1,c2-'a'+'A');则输出结果是【】。A)2,MB)3,EC)2,ED)输出项与对应的格式控制不一致,输出结果不确定6.C语句printf(y=%d,(9^2*8+3)%3*4);运行输出的结果是【】.A)y=0B)y=3C)8D)y=87.下面程序的执行结果是【】main(){inta,b;a=20;b=10;a+=a+b;a-=a-b;printf(%d\n,a);}A)10B)-10C)30D)08.使下列程序段输出“123,456,78”,由键盘输入数据,正确的输入是【】。inti,j,k;scanf(“%d,%3d%d”,&i,&j,&k);printf(“%d,%d,%d\n”,i,j,k);A)12345678B)123,456,78C)123,45678D)123,*45678第5章选择结构选择题(1)阅读以下程序:main(){intx;scanf(%d,&x);if(x--5)printf(%d,x);elseprintf(%d,x++);}程序运行后,如果从键盘上输人5,则输出结果是【】A)3B)4C)5D)6(2)若执行以下程序时从键盘上输入9,则输出结果是【】A)11B)10C)9D)8main(){intn;scanf(%d,&n);if(n++10)printf(%d\n,n);elseprintf(%d\n,n--);}(3)若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是【】A)swich(a+b);B)switch(a*a+b*b){case1:y=a+b;break;{case3:case0:y=a-b;break;case1:y=a+b;break;}case3:y=b-a,break;}C)switchaD)switch(a-b){casec1:y=a-b;break;{default:y=a*b;break;casec2:x=a*d;breakcase3:case4:x=a+b;breakdefault:x=a+b;case10:y=a-b;break;}}(4)若变量c为char类型,能正确判断出c为小写字母的表达式是【】A)'a'=c='z'B)(c='a')||(c='z')C)('a'=c)and('z'=c)D)(c='a')&&(c='z')(5)有如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}该程序的输出结果是【】A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2(6)有如下程序main(){floatx=2.0,y;if(x0.0)y=0.0;elseif(x10.0)y=1.0/x;elsey=1.0;printf(“%f\n”,y);}该程序的输出结果是【】A)0.000000B)0.250000C)0.500000D)1.000000(7)若有定义:floatw;inta,b;则合法的switch语句是【】A)switch(w)B)switch(a);{case1.0:printf(*\n);{case1printf(*\n);case2.0:printf(**\n);case2printf(**\n);}}C)switch(b)D)switch(a+b);{case1:printf(*\n);{case1:printf(*\n);default:printf(\n);case2:printf(**\n);case1+2:printf(**\n);default:printf(\n);}}(8)若输入B,以下程序的运行结果为【】main(){chargrade;scanf(“%c”,&grade);switch(grade){case‘A’:printf(“=85”);case‘B’:case‘C’:printf(“=60”);case‘D’:printf(“60”);default:printf(“error”);}}A)=85B)=60C)=6060errorD)error(9)以下不正确的语句为【】A)if(xy);B)if(xy){x++;y++;}C)if(x=y)&&(x!=0)x+=y;D)if(x!=y)scanf(“%d”,&x);elsescanf(“%d”,&y);(10)以下程序输出结果为【】main(){intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(“%d\n”,z);}A)3B)2C)1D)0(11)以下程序的输出结果是【】A)-11B)01C)10D)00main(){inta=-1,b=1,k;if((++a0)&&!(b--=0))printf(%d%d\n,a,b);elseprintf(%d%d\n,b,a);}(12)以下程序的输出结果是【】A)7B)6C)5D)4main(){intm=5;if(m++5)printf(%d\n,m);elseprintf(%d\n,m--);}(13)当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为【】A)1B)2C)3D)6if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;(14)有如下程序段inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c’B’);执行该程序段后,x的值为【】A)tureB)falseC)0D)1(15)有如下程序段intscore=5;switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);default:printf(“dataerror!”);}程序输出结果为【】A)Verygood!B)Good!C)dataerror!D)Verygood!Good!dataerror!(16)有如下程序main(){inta=10,b=4,c=3;if(ab)a=b;if(ac)a=c;printf(“%d,%d,%d\n”,a,b,c);}运行后的输出结果是【】。A)3,4,10B)4,4