1C++(上)总复习题第一、二章习题一、选择题1.下列符号串中不合法的C++语言标识符是。AregisterBTurbo_CCauto_D_1233.若有整型变量a和c,c的当前值是5,则执行下列语句后a的值是。a=2+(c+=c++,c+8,++c);c+=c++后c值为11,再自增为12A13B14C15D164.若有整型变量x的当前值是3,则执行下列语句的结果是。docout(x-=2);while(!(-x));输出1,3变为1后,为逻辑真,取反为假,退出循环A输出值0B输出值1C输出值3和0D陷入死循环5.从语法的角度来看,语句if(a=b=c)x++;是。用&&或||连接逻辑表达式A正确的B语法正确,但在编译是会有警告信息C语法上是错误的D编译系统不会进行相关检查7.数学式yxyx.22在C程序中对应正确的表达式为。A.sqrt(x*x+y*y)/x*yB.SQRT(x*x+y*y)/x*yC.sqrt((x*x+y*y)/x/y)D.SQRT(x*x+y*y)/(x*y)8.设有变量说明:intx;则表达式(x=4*5,x*5),x+25的值为。A.20B.45C.100D.12510.在C++语言中,下面符号串中,能用作变量名的标识符为。A.autoB.putsC.-1*numD.2-and11.下面四个用户定义的标识符中,只有一个是正确的。AcaseB_53Ca&bDab-c12.在16位系统中,对整型变量inti=32767;++i的值是。补码,有符号整数A-1B0C-32768D3276814.已知整型变量a和b的当前值分别为13和20,a||b的值是。A0B1C4D2915.在32位系统中求表达式s=10!的值时,变量s的类型应当是。AintBunsignedClongD以上三种都可以16.下面的常量表示有一个是不正确的,不正确的是。A-0B0x203C’\55’D’103’18.如果有下列变理定义:charc=97;则coutc;的输出是2AaB97C定义非法D赋初值非法19.数学式baeexx在C程序中对应正确的表达式为。A.exp(x)+exp(-x)/(a+b)B.(exp(x)+exp(-x))/a+bC.(exp(x)+exp(-x))/(a+b)D.(e^x+e^(-x))/(a+b)20.在while(!a)中,其中!a与表达式等价A.a==0B.a==1C.a!=1D.a!=021.设有说明:inta,b;执行语句:b=(a=3*5,a*4),a+15;之后,b的值为。A.15B.30C.60D.9022.下列表达式中,错误的是。A.4.0%2.0B.k+++jc.a+bc+d?a:bD.x*=y+2525.如果整型量a,b,c的值分别为5、4、3,则语句if(a=b=c)c++;执行后c的值是A,语法错误B.4C.2D.3有warnning,但if结果为假26.设标识符ch,a都被定义为字符型变量,以下赋值语句不正确的是_B_A.ch=a+’3’;B.ch=’ch’+’a’;C.ch=’c’+’h’;D.ch+=ch-a28.将变量a强制转换为具有b类型的数据,应表示为_AC_。A.(b)aB.a(b)C.b(a)D.(a)b29.有整型变量x,y,其中y!=0,下列与x等价30.已知整型变量a和b的当前值分别为13和16.a&b的值是AA.0(位运算)B.1C.29D.332.C++将数据分为若干类型,定义数据类型实际给出了两方面的信息:定义该类型数据B。A有效数字位数和数值表示范围B占用多大存储空间和允许的运算C数值和字符的不同表示以及适用范围D适用范围和允许的运算33.以下给出的标识符中C可用作合法的变量名。AgotoB$priceCsumD9kilo34.设inta=l,b=2;那么执行表达式a++&&++b;后a和b的值分别是D。A1和2B2和2C1和3D2和336.设整型变量X的值是5,则表达式2X5的值是B。A不确定B1C0D表达式非法37.a≠b且e≤d的c++表达式描述为D。3Aa◇b,c=dBa!=b&c=dCa=!b&&c=dDa!=b&&c=d38.如果定义了字符变量ch,以下B语句可以实现将键入的字符(包括空格、回车及间隔符)赋予ch。AcinchBcin.get(ch)Ccinget(ch)Dch=get()39.设有变量定义imx=100,y=1,Z,若执行语句Z=y0?++x:--x,变量z的值为C。A99B100C10lD10241.用#include命令包含的文件是CA目标文件B可执行文件C源程序文件D二进制文件42.若有a=13,b=5,c=3则a%b*c的值为BA6B9C7.8D844.若有宏定义和变量说明如下:#defineX1#defineYX+1#defineZY*X/2inta;a=Y;则执行以下语句后输出的结果是:BcoutZ--a;A75B11C125D7645.设x=2;y=3;表达式x=y==3运算后。x=AA1B2C3D046.一个可执行C++程序的开始执行点是A程序的第一条语句B包含文件的第一个函数C名为voidmain的函数D程序中的第一个函数49.若变量已正确定义并赋值,符合c++语言语法的表达式是A。A.a=a+7;B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b50.在C++语言中,int、float和longint这3种类型数据所占用的内存是。A.均为4个字节B.由用户自己定义C.由所用机器的机器字长决定的D.任意的51.若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是C。A.a=b=c=d=100;B.d++;C.c+b;D.d=(c=22)-(b++);二、填空题1.设a、b、c都是整型,则a=b=c=5时,下列表达式的结果是a=15、b=5、c=6。a+=b+c++42.数学表达式sin(30o)+x2cos(20o)的C++语言表达式是。4.main(){inti=4,j=5,k=6;i++&&++j||++k;coutijk;}程序的输出是566。5.voidmain(){inta=13,b=16;cout!a’\t’a&&b;}程序输出为013。6.#definePR(x,y,z)coutx’\t’y’\t’z’\n’main(){inti=0,j=0,k=0;i=(9+6)%5=9%5+6%5;couti’\n’;++i||++j&&++k;PR(i,j,k);i+=j++;couti;}程序的第一次输出是0。程序的第二次输出是100。程序的最后一次输出是1。7.设整型变量x,y,z的值分别为10,3,7;则表达式x10?x+100:x-10的值是08.若整型变量w=1,x=2,y=3,z=4,则条件表达式wx?w:zy?z:x的值为__4__9.inta=5,b=6,c=1,x=2,y=3,z=4;c=(a=cx)&&(b=yz);问:执行上述程序后,b的值是__6__,c的值是__0__。10.程序voidmain(){intx,y,z;x=y=z=0;cout(x++&&++y||z++)'\n';2题:sin((30*3.14/180)+x*x*cos(20*3.14/180)5题注意:1、使用a&&b时,无论b为何值,输出的结果都一样;2、使用(a&&b)时,输出结果为1;3、使用a&b时编译出错;4、使用(a&b)时输出结果为05coutx'\t'y'\t'z;;}程序第一行输出为0程序第二行输出为10111.程序#definePR1(num)coutnum;cout’\t’#definePR2(a,b)PR1(a);PR1(b)#definePRINT(c,d)coutcdmain(){intx=10,y=20,z=100;PR1(x);PR2(x,y);PRINT(hex,z);}输出结果为10102064第三章选择、循环结构一、选择题2.当前整型变量i的值是10,执行下列switch语句后i的值是13。switch(i){case9:i+=1;case10:i+=1;case11:i+=1;defaule:i+=1}4.下列关于break和switch语句的叙述中,正确的是B。A.break是switch语句的一个成分B.在语句switch中可以根据需要使用或不使用break语句C.在语句switch中必须使用break语句D.上述结论中两个正确的5.设有程序段intx=10;while(x=0)x=x-1;则下面描述中正确的是CA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句只执行一次66.退出一个循环语句(不终止函数的执行)的有效措施是:AA、breakB、continueC、returnD、exit7.设整型变量x的当前值为3,执行以下循环语句后,输出的结果为:docout’\t’x-=2;while(!(--x));A、0B、1-2C、30D、死循环,输出许多值10.C++语言中D。A.不能使用do-while语句构成的循环B.do-whiIe语句构成的循环必须使用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环二填空题1.有整型变量a、b,则下列for循环中的输入语句最少可执行1次,最多可执行3次for(a=0,b=0;b!=30&&a3;a++)cinb;2.设整型变量I初值是1,则语句while(I++5);执行后I的值是6。3.下面程序的执行结果输出101020,#definePR1(num)counum;cout’\t’#definePR2(a,b)PR1(a);PR1(b)main(){intx=10,y=20,z=100;PR1(x);PR2(x,y);}4.下面程序的执行中共输出3个数,最后一个输出的数是2voidmain(){inty=9;for(;y0;y--)if(y%3==0)cout--y’\t’;}5.下面程序的执行结果是死循环。#includeiostream.hmain(){intx=1,i=1;for(;x50;i++)7题输出是1-2运行结果:8,5,27{if(x10)break;if(x%2){x+=3;continue;}x=1;}coutxi’\n’;}6.[程序]#includeiostream.hvoidmain(){unsignedi;intcount=1;i=~0;while((i=1)!=0)count++;cout“count=”count’\n’;}在16位系统中程序的结果是count=32。如果将(i=1)改为(i1)程序的结果是死循环。不作上述修改,而将unsignedi;改为unsignedchari;;程序的输出结果是count=8。8.inta,b;for(b=1,a=1;b=50;b++){if(a=10)break;if(a%2==1){a+=5;continue;}a-=3;}问:执行上述程序段后,a的值是10,b的值是69.voidmain(){intm,n,x,y;6题这里将~=0改为!=0了。不然会有语法错误本题是通过右移算类型所占的位数8cinxy;m=1;n=1;if(x0)m=m+1;if(xy)n=n+m;elseif(x==y)n=5;elsen=2*m;coutmn;}问:为了使输出的结果是n=4,x的输入值应满足条件x0与xy10.voidmain(){inta,b,c;