您好,欢迎访问三七文档
一、填空题(10分)1.(3)C++程序开发通常要经过5个阶段,包括:编辑,编译,连接,运行,调试。首先是编辑阶段,任务是编辑源程序,C++源程序文件通常带有.cpp扩展名。接着,使用编译器对源程序进行编译,将源程序翻译为机器语言代码,过程分为词法分析,语法分析,代码生成三个步骤。(4)对象与对象之间通过消息进行相互通信。(8)泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。2.(4)C++预定义的常用转义序列中,在输出流中用于换行,空格的转义序列分别为\n,\t。(10)&&与||表达式按从左到右的顺序进行计算,以&&连接的表达式,如果左边的计算结果为false或0,右边的计算不需要进行,就能得到整个逻辑表达式的结果:false;以||连接的表达式,如果左边的计算结果为true或非0,就能得到整个逻辑表达式的结果:true。(14)按操作数数目分,运算符的优先级从高到低排列为单目,双目,三目,按运算符的性质分,优先级从高到低排列为算术,移位,关系,按位,逻辑。4(4)函数调用过程的3个步骤为:函数调用,函数体执行,返回。(6)递归程序分为两个阶段执行:调用,回代。(8)函数名相同,但对应形参表不同的一组函数称为重载函数,参数表不同是指参数个数,类型不同。(9)确定对重载函数中函数进行绑定的优先次序为精确匹配,对实参的类型向高类型转换后的匹配,实参类型向低级类型及相容类型转换后的匹配。(10)当既存在重载函数,又有函数模版,函数调用优先绑定重载函数,只有不能精确匹配重载函数时,才实列化类模板。(12)在C++中,函数不允许嵌套定义,允许嵌套调用。6(2)变量的储存类型分为:auto,extern,register,static。当声明一个静态(static)变量,它既有局部变量的性质,又具有全局变量的性质。(3)C++程序的内存分为四个区:全局数据区,代码区,栈区,堆区。全局变量,静态变量,字符串常量存放在全局数据区,所有的函数和代码存放在代码区,为运行函数而分配的函数参数,局部变量,返回地址存放在栈区,动态分配的内存在堆区。(4)全局变量,静态变量具有静态生存期,局部变量生存期为动态。(6)C++源程序中以#开头,以换行符结尾的行称为预处理命令。预处理命令编译前由预处理器执行。7(2)类的数据成员不能在定义的时候初始化,而应该通过构造函数初始化。(7)类的静态成员为该类的所有对象所共享。(11)定义类的动态对象数组时,系统只能够自动调用该类的构造函数对其进行初始化。(12)C++中语句constchar*constp=“hello”;所定义的指针p和它所指的内容都不能被改变。(13)假定AB为同一个类,则语句AB(AB&X);为该类拷贝构造函数的原型说明。(15)析构函数在对象的生存期结束时被自动调用,全局对象和静态对象的析构函数在程序运行结束时调用。8(2)派生类的对象可以作为基类的对象使用,这称为类型兼容。(3)在C++中,三种派生方式的说明符号为public、private、protected,如果不加说明,则默认的派生方式为private。(5)相互关联的各个类之间的关系主要分为组合关系和继承关系。(7)保护成员具有双重角色,对派生类的成员函数而言,他是公有成员,但对所在类之外定义的其他函数而言则是私有成员。(8)多继承时,多个基类中的同名成员在派生类中由于标识符不唯一而出现二义性。在派生类中采用成员名限定或重定义具有二义性的成员来消除该问题。9(1)将一个函数调用链接上相应函数体的代码,这一过程称为联编(绑定)。(3)在编译时就确定的函数调用称为静态联编,他通过使用重载函数实现。(8)当通过基类指针使用函数时,C++会在与对象关联的派生类中正确地选择重定义的函数。(10)若以非成员函数形式,为类bounce重载!运算符,其操作结果为bool型数据,则该运算符重载函数的原型是:friendbooloperate!(bounce);二、选择题(30分)1(2)C++语言程序能够在不同操作系统下编译、运行,说明C++具有良好的:A移植性B适应性C兼容性D操作性(4)C++程序运行时,总是始于:A程序中的第一条语句B预处理命令后的第一条语句Cmain()D预处理命令(6)下面概念中,不属于面向对象编程方法的是:A对象B继承C类D过程调用2(6)若定义:shortinti=32769;couti;的结果为:A32769B32767C-32767D不确定的数(7)若定义:charc=’\78’;则变量c:A包含一个字符B包含两个字符C包含三个字符D定义不合法(9)设i为int型,f为float型,则10+i+‘f’的数据类型为:AintBfloatCdoubleDchar(10)设变量f为float型,将f小数点后第三位四舍五入,保留小数点后两位的表达式为:A(f*100+0.5)/100B(f*100+0.5)/100.0C(int)(f*100+0.5)/100.0D(int)(f*100+0.5)/100(13)六种基本数据类型的长度排列正确地是:Abool=charint=long=floatdoubleBcharbool=int=long=floatdoubleCboolcharintlongfloatdoubleDboolcharintlong=floatdouble(16)判断char型变量c是否为英文字母的表达式为:A’a’=c=’z’&&’A’=c=’Z’B’a’=c&&c=’z’||’A’=c&&c=’Z’C’a’=c=’z’||’A’=c=’Z’D(’a’=c=’z’)&&(’A’=c||c=’Z’)3(5)以下程序输出结果为:intmain(){intx(1),a(0),b(0);switch(x){case0:b++;case1:a++;b++;}cout“a=”a”,b=”b;return0;}Aa=2,b=1Ba=1,b=1Ca=1,b=0Da=2,b=2(6)以下程序输出结果为:intmain(){inta(15),b(21),m(0);switch(a%3){case0:m++;break;case1:m++;switch(b%2){Default:m++;case0:m++;break;}}coutm;return0;}A1B2C3D4(9)下列程序的运行结果是:intmain(){inta(1),b(10);do{b-=a;a++;}while(b--0);cout“a=”a”,b=”b;return0;}Aa=3,b=11Ba=2,b=8Ca=1,b=-1Da=4,b=9(10)下面的程序段循环执行了多少次:intk=10;while(k=3)k=k-1;A死循环B0次C3次D7次(14)以下循环体执行的次数为:for(intx=0,y=0;(y=123)&&(x4);x++);A死循环B次数不定C4次D3次(17)以下循环体执行的次数为:inti(0);while(i10){if(i1)continue;if(i==5)break;i++;}A死循环B1次C10次D6次(18)执行语句序列intn;cinn;switch(n){case1:case2:cout’1’;case3:case4:cout’3’;}时,若键盘输入1,则屏幕显示:A1B2C3D124(4)若有函数调用语句:fun(a=b,(x,y),(x,y,z));此调用语句的实参个数为:A3B4C5D6(7)在系统调用重载函数时,根据一些条件确定调用哪个重载函数,下列条件中,不能作为依据的是:A实参个数B实参类型C函数名称D函数类型(8)下列函数原型声明中错误的是:AvoidFun(intx=0,inty=0)BvoidFun(intx,inty)CvoidFun(intx,inty=0)DvoidFun(intx=0,inty)(10)以下函数模板定义的头部,正确的是:AtemplateTBtemplateclassT1,T2Ctemplateclasst1,typenamet2,ints=0DtemplateclassT1,typenameT2(11)若同时定义了如下函数,fun(8,3.1)调用的是下列哪个函数:Afun(float,int)Bfun(double,int)Cfun(char,float)Dfun(double,double)(12)若同时定义了如下函数,fun(8,3.1)调用的是下列哪个函数:AtemplateclassT1,classT2fun(T1,,2)Bfun(double,int)Cfun(char,float)Dfun(double,double)7.2(31)若有如下类声明:classmyclass{public:myclass(){cout1;}};执行下列语句:myclassa,b[2],*p[2];以后,程序的输出结果是()A11B111C1111D111115.1(11)以下不能正确进行字符串赋初值的语句是()Acharstr[5]=”good!”;Bcharstr[]=”good!”;Ccharstr[8]=”good!”;Dcharstr[5]={‘g’’o’’o’’d’};三、程序填空题(20分)1.4为了使下列程序能顺利进行,请在空白处填上相应的内容(可以什么都不填):#includeiostream#includeiomanipusingstd::cin;usingstd::cout;usingstd::setw;usingnamespacestd;intmain(){floati,j;cinij;coutsetw(10)i*j;return0;}3.2(2)下列程序的功能是:输出100以内能被3整除且个位数位6的所有整数,请填空:#includeiostreamusingnamespacestd;intmain(){inti,j;for(i=0;i10;i++){j=i*10+6;if(j%3!=0)continue;coutj;}Return0;}(3)斐波纳契数列:#includeiostreamusingnamespacestd;intmain(){intf1(1),f(2),m;cinm;coutf1”\t”f2”\t”;for(inti=2;im;i++){f2=f1+f2;f1=f2-f1;coutf2”\t”;if((i+1)%5==0)coutendl;}return0;}4.3下面函数模板求x^n,其中n为整数:#includeiostreamusingnamespacestd;templateclassTdoublepower(Tx,intn){if(x==0)return0;if(n==0)return1;Tpowerx=1;for(inti=0;iabs(n);i++)powerx=powerx*x;if(n0)return1.0/powerx;elsereturnpowerx;}5.2(2)以下程序在m行和n列的二维数组中,找出每一行上的最大值,显示最大值的行号,列号,值。#includeiostreamusingnamespacestd;intmain(){constintM(3),N(4);intx[M][N]={1,5,6,4,2,7,4,3,8,2,3,1};for(inti=0;iM;i++){intt=0;for(intj=0;jN,j++)if(x[i][j]x[i][t])t=j;couti+1“,”t+1“=”x[i][t]endl;}return0}(3)函数expand(char*s,char*t)在将字符串s
本文标题:75C++复习题
链接地址:https://www.777doc.com/doc-4504157 .html