C++程序设计模拟试卷2一.一.选择题(每题1分,共25分)1.下列字符列中,可作为C++语言程序自定义标识符是()。A.switchB.fileC.breakD.do2.运算符+、=、=、%中,优先级最低的运算符是()。A.+B.=C.=D.%3.设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是()。A.0,0B.0,1C.1,0D.1,14.字符串”vm\x43\\\np\102qu”的长度是()。A.8B.9C.16D.176.5.设有代码“inta=6;”,则执行了语句“a+=a-=a*a;”后,变量a的值是()。A.0B.-24C.-40D.–606.voidmain(){intx=-1;do{x=x*x;}while(!x);}下列说法正确的是()。A.是死循环B.循环执行两次C.循环执行一次D.有语法错误7.下面有关for循环的正确描述是()。A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段()。x=3;do{y=x--;if(!y){cout”x”;continue;}cout”#”;}while(1=x=2);A.将输出##B.将输出##*C.是死循环D.含有不合法的控制表达式9.以下正确的说法是()。A.用户若需要调用标准函数,调用前必须重新定义B.用户可以直接调用所有标准库函数C.用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D.用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数10.在参数传递过程中,对形参和实参的要求是()。A.函数定义时,形参一直占用存储空间B.实参可以是常量、变量或表达式C.形参可以是常量、变量或表达式D.形参和实参类型和个数都可以不同11.对数组名作函数的参数,下面描述正确的是()。A.数组名作函数的参数,调用时将实参数组复制给形参数组B.数组名作函数的参数,主调函数和被调函数共用一段存储单元C.数组名作参数时,形参定义的数组长度不能省略D.数组名作参数,不能改变主调函数中的数据12.若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i10)。A.p[i]B.*(*(a+i))C.a[p-a]D.*(&a[i])13.以下程序的输出结果是()。#includeiostream.hvoidmain(){chars[]=12134211,*p;intv1=0,v2=0,v3=0,v4=0;v1v2v3v4for(p=s;*p;p++)2434switch(*p){case'1':v1++;case'3':v3++;case'2':v2++;default:v4++;}coutv1,v2,v3,v4endl;}A.4,2,1,1B.4,7,5,8C.7,3,2,1D.8,8,8,814.下列声明结构体变量错误的是()。A.structstudentB.structstudent{intno;{intno;charname[16];charname[16];}st1,st2;};structstudentst1,st2;C.structstudentD.structstudent{intno;{intno;charname[16];charname[16];};};structst1,st2;studentst1,st2;15.对类的构造函数和析构函数描述正确的是()。A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载16.下面对于友元函数描述正确的是()。A.友元函数的实现必须在类的内部定义B.友元函数是类的成员C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员17.派生类的对象对它的基类成员中()是可以访问的。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员18.C++类体系中,不能被派生类继承的有()。A.构造函数B.虚函数C.静态成员函数D.赋值操作函数19.以下()成员函数表示虚函数。A.virtualintvf(int);B.voidvf(int)=0;C.virtualvoidvf()=0;D.virtualvoidvf(int){};20.下面对静态数据成员的描述中,正确的是()。A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以在类体内进行初始化C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用21.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。A.规律性B.传递性C.重复性D.多样性22.若有以下定义,则释放指针所指内存空间的操作是()。floatr=newsfloat[10];A.deleter;B.delete*r;C.delete[]r;D.deleter[];23.若有以下定义,则对字符串的操作错误的是()。chars[10]=”Program”,t[]=”test”;A.strcpy(s,t);B.coutstrlen(s);C.strcat(“this”,t);D.cint;24.在if语句中的表达式是()。A.只能是表达式B.只能是关系表达式和逻辑表达式C.只能是逻辑表达式D.可以是任意表达式25.在用关键字class定义的类中,以下叙述正确的是()。A.A.在类中,不作特别说明的数据成员均为私有类型B.B.在类中,不作特别说明的数据成员均为公有类型C.C.类成员的定义必须是成员变量定义在前,成员函数定义在后D.D.类的成员定义必须放在类定义体内部二.填空题(每空1分,共25分)1.C++程序有且只有一个。2.若有变量定义intx=7;floata=2.5,c=4.7;表达式a+(int)(x/3*(int)(c+2)/2)%4的值是。3.3.”x或y中至少有一个小于z”的C++语言表达式是。4.将字符串s2拷贝到字符数组s1的函数调用是。5.执行语句“x=(a=4,b=a++);”后,变量x、a、b的值依次为。6.表述“x或y中有一个大于z”的C++语言表达式是。7.字符串str长度的函数调用是。8.执行语句“y=(x=3,z=--x);”后,变量的值依次为_。9.设#definea(x)x*x;couta(4+6)endl;上述程序段运行结果为。10.设x为整型变量,表达数学关系式:13x19的C++语言表达式是。11.设有代码“staticinta[3][4]={{1,2},{3},{4,5,6}};”则a[1][1]值为。12.若有定义:charu;intb;floatv;doubled;则表达式u*b+d-v的值的类型为。13.假定所有变量均已正确定义,下列程序段运行后x的值是。a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;14.类的构造函数的主要作用是。15.C++将类继承分为和两种。16.建立类对象时,为节省内存,系统一般只分配用于_内存。17.派生类可以定义其______中不具备的数据和操作。18.operator是C++的一个关键字,它经常和C++的一个运算符连用,构成一个运算符函数名。运算符函数的返回类型不能是类型。19.在继承机制下,当对象消亡时,编译系统先执行________的析构函数,然后再执行_______的析构函数。20.C++文件的两种类型,分别是和。21.在保护继承关系下,基类有公有成员和保护成员将成为派生类中的成员,它们只能由派生类的来访问。三.写出下列程序运行结果(每题4分,共24分)1.#includeiostream.hvoidmain(){intI;for(I=1;I=5;I++)switch(I%2){case0:I++;cout“#”;break;case1:I+=2;cout“*”;default:cout“\n”;}}2.#includeiostream.hvoidfun();intn=5;voidmain(){intn=10;coutnendl;fun();}voidfun(){coutnendl;}3.#includeiostream.hintb=5;intfun(intn);voidmain(){inti;for(i=0;i3;i++){coutfun(i)endl;}}intfun(intn){statica=1;intc=10;a=a+100;b=b+100;c=c+100;returna+b+c;}4.#includeiostream.hintgcd(intm,intn){if(m%n==0)returnn;elsereturngcd(n,m%n);}voidmain(){intx=40,y=116;coutgcd(y,x)endl;}5.#includeiostream.h#includeconio.hclassPoint{intx,y;public:Point(){x=1;y=1;}Point(inttx,intty){x=tx;y=ty;}~Point(){coutPointx','yisdeleted.endl;}};voidmain(){Pointobj1;Pointobj2(10,20);}6.#includeiostream.hclasscount{staticintn;public:count(){n++;}voidshow(){coutnendl;}~count(){coutnendl;n--;}};intcount::n=0;voidmain(){counta;a.show();{countb[4];b[3].show();}a.show();}四.改正错误(每题有二处错误,在错误语句或表达式画线,并写出正确语句。)(每题4分,共16分)1.下列程序求字符串长度。#includeiostream.hintfun(chars){inti=0;while(s[i]!='\n'){i++;}returni;}voidmain(){chars[80];cin.getline(s,80);//读一行字符coutlength:fun(s)endl;}2.下列程序功能是求x的y次方(缺省是x的2次方)#includeiostream.hdoublefun(doublex,doubley){inti;doubles=1;for(i=1;iy;i++)s=s*x;returns;}voidmain(){doublex=2.5,y=3;coutpow(2.5,2):fun(x)endl;coutpow(2.5,3):fun(x,y)endl;}3.#includeiostream.hclassPoint{private:intx,y;voidinit(inta,intb){x=a;y=b;}voidshow(){coutx=xy=yendl;}};voidmain(){Pointa(24,50);a.show();}4.#includeiostream.hclassAmplifier{floatinvol,outvol;public:Amplifier(floatvin,floatvout){invol=vin;outvol=vout;}floatgain();};Amplifier::fl