高级语句程序设计(C++)一、单项选择题1、在一个C++程序中,main函数的位置(③)。①必须在程序的开头②必须在程序的后面③可以在程序的任何地方④必须在其它函数中间2、C++程序基本单位是(③)。①数据②字符③函数④语句3、执行语句inti=10,*p=&i;后,下面描述错误的是(①)。①p的值为10②p指向整型变量i③*p表示变量i的值④p的值是变量i的地址4、执行语句inta=5,b=10,c;int*p1=&a,*p2=&b;后,下面不正确的赋值语句是(②)。①*p2=b;②p1=a;③p2=p1;④c=*p1×(*p2);5、设i=1,j=2,则表达式i+++j的值为(③)。①1②2③3④46、设i=1,j=2,则表达式++i+j的值为(④)。①1②2③3④47、执行下列语句后,x的值是(④),y的值是(③)。intx,y;x=y=1;++x||++y;①不确定②0③1④28、已知x=5,则执行语句x+=x-=x×x;后,x的值为(③)。①25②40③-40④209、已知a=4,b=6,c=8,d=9,则“(a++,ba++&&cd)?++d:ab”的值为(④)。①9②6③8④010、有如下程序段:inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c’B’);执行该程序段后,x的值为(④)。①ture②false③0④111、下面程序的输出结果是(④)。#includeiostreamusingnamespacestd;intmain(){inta=6,b=6;if(a5)a-=1;b+=1;elsea+=1;b-=1;cout”a=”aendl;cout”b”bendl;return0;}①57②a=5b=7③a=5b=6④编译时出错12、下面程序的输出结果是(②)#includeiostreamusingnamespacestd;intmain(){inta=6,b=6;if(a5){a-=1;b+=1;}else{a+=1;b-=1;}cout”a=”aendl;cout”b”bendl;return0;}①57②a=5b=7③a=5b=6④a=6b=513、下面程序的输出结果是(②)#includeiostreamusingnamespacestd;intmain(){intx=6,y=8;if(x++6)cout++yendl;if(x6)cout--yendl;elsecouty++endl;return0;}①8②7③9④编译时出错14、下面程序的输出结果是(①)#includeiostreamusingnamespacestd;intmain(){intx=6,y=8;if(++x6)cout++yendl;elsecouty++endl;if(x6)cout--yendl;return0;}①88②97③78④编译时出错15、下面程序的输出结果是(①)#includeiostreamusingnamespacestd;f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}intmain(){inta=2,i;for(i=0;i3;i++)coutf(a)endl;return0;}①789②777③71013④791116、下面程序的输出结果是(③)#includeiostreamusingnamespacestd;voidfun(intx,inty,intz){z=x×x+y×y;}intmain(){intz=68;fun(5,2,z);coutz;return0;}①0②29③68④无定值17、下面程序的输出结果是(①)#includeiostreamusingnamespacestd;intfun(inta,intb){return(++a×b++);}intmain(){intx=3,y=4,z=5,r;r=fun(fun(x,y),z);coutrxyendl;}①8534②6034③12645④854518、下面的程序中,当输入4、2时,其输出结果是(③)#includeiostreamusingnamespacestd;longfib(intn){if(n2)return(fib(n-1)+fib(n-2));elsereturn(n);}intmain(){inti;cout”请输入一个整数:”;cini;coutendl;coutfib(i)endl;return0;}①51②42③52④62@@19、下面程序的输出结果为(①)#includeiostreamusingnamespacestd;unsignedfunc(unsignednum){unsignedd=1,k;do{k=num%10;num/=10;}while(num);return(k);}intmain(){unsignedn=26;coutfunc(n);return0;}①2②4③6④520、下面程序的输出结果为(③)#includeiostreamusingnamespacestd;func(inta,intb){intc;c=a×b;return(c);}intmain(){intx=6,y=7,z=8,r;r=func((x--,y,x×y),z--);coutr;return0;}①294②245③280④41621、下面程序的输出结果为(①)#includeiostreamusingnamespacestd;intmain(){inta[3][3]={{1,2},{3,4},{5}};ints=0;for(inti=1;i3;i++)for(intj=0;j=i;j++)s+=a[i][j];coutsendl;return0;}①12②14③15④13@@@22、下面程序的输出结果是(①)#includeiostreamusingnamespacestd;voidfun(int*x,int*y){cout*x”“*y”“;x=3;y=4;}intmain(){intx=1,y=2;fun(&y,&x);coutx”“y;return0;}①2143②1212③2112④123423、下面程序的输出结果是(③)#includeiostreamusingnamespacestd;intmain(){inta[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;cout*--p;return0;}①编译出错②a[4]的地址③5④324、关于类和对象不正确的说法是(③)1类是一种类型,它封装了数据和操作②对象是类的实例③一个类的对象只有一个④一个对象必属于某个类25、下列的各种函数中,(③)不是类的成员函数。①构造函数②析构函数③友元函数④拷贝初始化构造函数26、作用域运算符的功能是(④)。①标识作用域的级别的②指出作用域的范围的③给定作用域的大小的④标识某个成员是属于哪个类的27、关于成员函数特征的下述描述中,(①)是错误的。①成员函数一定是内联函数②成员函数可以重载2成员函数可以设置参数的默认值④成员函数可以是静态的28、下列对派生类的描述中,(④)是错误的。①一个派生类可以作为另一个派生类的基类②派生类至少有一个基类3派生类的成员除了它自已的成员外,还包含了它的基类的成员4派生类中继承的基类成员的访问权限在派生类中保持不变29、对基类和派生类的描述中,(②)是错的。①派生类是基类的具体化②派生类是基类的子集③派生类是基类定义的延续④派生类是基类的组合30、派生类的构造函数的成员初始化列表中,不能包含(③)。①基类的构造函数②派生类中子对象的初始化③基类的子对象初始化④派生类中一般数据成员的初始化31、设置虚基类的目的是(②)。①简化程序②消除二义性③提高运行效率④减少目标代码32、定义重载函数的下列要求中,(④)是错误的。①要求参数的个数不同②要求参数中至少有一个类型不同③要求参数个数相同时,参数类型不同④要求函数的返回值不同33、关于子类型的描述中,(①)是错的。①子类型就是指派生类是基类的子类型②一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型③在公有继承下,派生类是基类的子类型④子类型关系是不可逆的34、下列对重载函数的描述中,(①)是错的。①重载函数中不允许使用缺省参数②重载函数中编译系统根据参数表进行选择③不要使用重载函数来描述毫无相干的函数④构造函数重载将给初始化带来多种方式35、已知一个类A,(③)是指向类A成员函数的指针。假设类A有3个公有成员:Voidf1(int),voidf2(int)和inta。1A*p;②intA::*pc=&A::a;③voidA::*pa();④A*pp;36、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(②)是正确的1p=f1;②p=A::f1;③p=A::f1();④p=f1();37、已知:p是一个指向类A数据成员m的指针,a1是类A的一个对象。如果要给m赋值为5,(③)是正确的。1a1.p=5;②a1-p=5;③a1.*p=5;④*a1.p=5;38、已知类A中一个成员函数说明如下:voidSet(A&a)其中,A&a的含意是(③)。1指向类A的指针为a②将A的地址值赋给变量Set③a是类A的对象的引用,用来作函数Set()的形参④变量A与a按位相与作为函数Set()的参数39、有以下类的说明,请指出错误的地方(A)classCSample{private:inta=2.5;(A)CSample;(B)public:CSample(intval);(C)~CSample;(D)};40、下面程序的输出结果是(①)#includeiostreamusingnamespacestd;classpoint{public:voidpoi(intpx=10,intpy=10){x=px;y=py;}getpx(){returnx;}getpy(){returny;}private:intx,y;};intmain(){pointp,q;p.poi();q.poi(15,15);cout“p点的坐标是:”p.getpx()“,”;coutp.getpy()endl;cout“q点的坐标是:”q.getpx()“,”;coutq.getpy()endl;return0;}①p点的坐标是:10,10②p点的坐标是:0,0q点的坐标是:15,15q点的坐标是:15,15③p点的坐标是:0,0④p点的坐标是:10,10q点的坐标是:0,0q点的坐标是:10,10答案1.(3)2.(3)3.(1)4.(2)5.(3)6.(4)7.(4)(3)8.(3)9.(4)10.(4)11.(4)12.(4)13.(3)14.(1)15.(1)16.(3)17.(1)18.(3)19.(1)20.(3)21.(1)22.(1)23.(3)24.(3)25(3)26(4)27(1)28(4)29(2)30(3)31(2)32(4)33(1)34(1)35(3)36(2)37(3)38(3)39(A)40(1)二、判断题1、任何字符常量与一个任意大小的整型数进行加减都是有意义的。(×)2、在命名标识符中,大小写字母是不加区分的。(×)3、引用是某个变量的别名。对引用的操作,实质上就是对被引用的变量的操作。(√)4、typedef类型定义是原来定义一些C++中所没有的新类型。(×)5、枚举变量的取值收到该枚举变量所对应的枚举表中枚举常量的局限。(√)6、已知:inta(5);表达式(a=7)+a具有二义性。(√)7、预