《最新-度c++期末试题.docx》由会员分享,可在线阅读,更多相关《最新-度c++期末试题.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品资料2011-度c+期末试题.20112012年度c+期末试试题一选择题(共50分每题2分)1下列字符列中,可作为C+语言程序自定义标识符是( )。 A.switch B.file C.break D.do 2 运算符 +、=、=、% 中,优先级最低的运算符是( )。 A. + B.= C.= D.% 3 设变量m,n,a,b,c,d均为0,执行(m = a=b)|(n=c=d)后,m,n的值是短路( )。 A.0,0 B. 0,1 C. 1,0 D. 1,14. 字符串”vmx43np102qu”的长度是( )。A. 8 B. 9 C. 16 D. 17 5.设有代码“int a = 6
2、;”,则执行了语句“a + = a - = a*a;”后,变量a的值是( )。A.0 B. -24 C. -40 D. 606. void main() int x=-1;do x=x*x;while(!x);下列说法正确的是( )。A是死循环 B循环执行两次C循环执行一次 D有语法错误7.下面有关for循环的正确描述是( )。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环体Dfor循环的循环体语句中,可以包含多条语句,但必须用大括号括起来8.下面程序段( 从右到左x=2为真1时)。x=3;do y=x-;
3、if(!y) cout”x”; continue;cout”#”;while(1=x=2);(1=x) = 1,0 bool 型A将输出# B将输出#*C是死循环 D含有不合法的控制表达式9.以下正确的说法是( )。A用户若需要调用标准函数,调用前必须重新定义B用户可以直接调用所有标准库函数 C用户可以定义和标准库函数重名的函数,但是在使用时调用的是系统库函数D用户可以通过文件包含命令将系统库函数包含到用户源文件中,然后调用系统库函数10.在参数传递过程中,对形参和实参的要求是()。A函数定义时,形参一直占用存储空间B实参可以是常量、变量或表达式C形参可以是常量、变量或表达式D形参和实参类型和
4、个数都可以不同11对数组名作函数的参数,下面描述正确的是()。A数组名作函数的参数,调用时将实参数组复制给形参数组B数组名作函数的参数,主调函数和被调函数共用一段存储单元C数组名作参数时,形参定义的数组长度不能省略D数组名作参数,不能改变主调函数中的数据12. 若有语句int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则( )不是对a数组元素的正确引用(其中0i10)。ApiB*(*(a+i)Cap-aD*(&ai)13. 以下程序的输出结果是( )。#include void main()char s=,*p;int v1=0,v2=0,v3=0,v4=0; v1 v2 v3
5、 v4for (p=s;*p;p+) 2 4 3 4switch(*p)case 1:v1+;case 3:v3+;case 2:v2+; default: v4+;coutv1,v2,v3,v4endl;A4,2,1,1 B4,7,5,8 C7,3,2,1D8,8,8,814. 下列声明结构体变量错误的是( )。Astruct student B struct student int no; int no;char name16; char name16; st1,st2; ;struct student st1,st2;Cstruct student D struct student in
6、t no; int no;char name16; char name16; ; ; struct st1,st2; student st1,st2;15. 对类的构造函数和析构函数描述正确的是( )。A构造函数可以重载,析构函数不能重载B构造函数不能重载,析构函数可以重载C构造函数可以重载,析构函数也可以重载D构造函数不能重载,析构函数也不能重载16. 下面对于友元函数描述正确的是( )。A友元函数的实现必须在类的内部定义 B友元函数是类的成员C友元函数破坏了类的封装性和隐藏性 D友元函数不能访问类的私有成员17. 派生类的对象对它的基类成员中( )是可以访问的。A公有继承的公有成员 B公有
7、继承的私有成员 C公有继承的保护成员 D私有继承的公有成员18. C+类体系中,不能被派生类继承的有( )。A构造函数 B虚函数 C静态成员函数 D赋值操作函数19以下( )成员函数表示虚函数。Avirtual int vf(int); Bvoid vf(int)=0; C纯虚函数,不用定义virtual void vf()=0; Dvirtual void vf(int) ;20. 下面对静态数据成员的描述中,正确的是( )。A静态数据成员可以在类体内进行初始化B静态数据成员不可以在类体内进行初始化C静态数据成员不能受private控制符的作用D静态数据成员可以直接用类名调用?21. 继承具
8、有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A规律性 B传递性 C重复性 D多样性22.若有以下定义,则释放指针所指内存空间的操作是 ( )。 float r=news float10;A.delete r ; B.delete *r;C.delete r; D.delete r;23.若有以下定义,则对字符串的操作错误的是( strcat(s1, s2):add s2 to s1s tail.)。 char s10=”Program”,t=”test”; A.strcpy(s,t);Copy t to s B.coutt;24.在if语句中的表达式是
9、( )。A.只能是表达式 B.只能是关系表达式和逻辑表达式C.只能是逻辑表达式 D.可以是任意表达式25.在用关键字class定义的类中,以下叙述正确的是( )。A. 在类中,不作特别说明的数据成员均为私有类型B. 在类中,不作特别说明的数据成员均为公有类型C. 类成员的定义必须是成员变量定义在前,成员函数定义在后D. 类的成员定义必须放在类定义体内部二填空题(共10分每题1分)1.【1】是标准C+指定的一个名字空间.2.已知 a=10,b=15,c=1,d=2,e=0,则表达式c=be的值为【2】.3.若有以下数组a,数组元素:a0a9,其值为 9 4 12 8 2 10 7 5 1 3该数
10、组可用的最小下标值是【3】. 4.C+提供了内联函数,在定义函数时冠以关键字【4】5.int a33=1,2,3,4,5,6,7,8,9;其中a12的值为【5】.6.有下列程序段,执行后的输出结果是【6】. int a=3, b=5; int max(int a, int b) int c; c=ab? a:b; return c; void main() int a=8; coutmax(a,b)endl; (7)下列程序的输出结果是 11 。#include using namespace std;class Test public: Test() cnt+; Test() cnt-; s
11、tatic int Count() return cnt;private: static int cnt;int Test:cnt = 0;int main() cout Test:Count0 ; Test tl, t2; Test* pT3 = new Test; Test* pT4 = new Test; cout Test:Count0 ; delete pT4; delete pT3; cout Test:Count() endl;return 0;(8)下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*.*2*1)unsigned
12、fact(unsigned n) if ( n= 1) return 1; return 12 ; (9)下列程序的输出结果是 13 。#include using namespace std;templateT fun(T a, T b) return (a=b)?:b;int main() cout fun(3, 6) , fun (3.14F, 6.28F) endl; return 0; (10)下列程序的输出结果是 15 。#include using namespace std;class base public: int n; base(int x) n = x; virtual
13、 void set(int m) n = m; cout n ;class deriveA:public base public: deriveA(int x):base(x) void set(mt m) n += m; cout n ;class deriveB:public base public: deriveB(int x):base(x) void set(int m) n +=m; cout n aet(1); pbase = &d2; pbase-set(2)return 0;一选择题答案123456789101112131415BCCBDCDCDBBBBCA161718192
14、02122232425CAADBBCCDA二填空题答案(1) std (2) 1(3) 0(4) inline( 5) 0(6) 8 (7)11 042 (8)12 n*fact(n-1) (9)13 3,3.14(10)15 25编程题共40分(1,(10分),2(15分),3(15分)1 创建一个名为time的类,它包括分别表示小时、分钟和秒的int类型的数据成员以及两个构造函数,一个构造函数将数据成员初始化为8,另一个将数据成员初始化为一个固定的值。另有一成员函数将时间以10:10:10的格式显示在屏幕上,编写成为一个完整的程序。#includeclass Timeprivate:int
15、 x,y,z;public:Time()x=y=z=8;Time(int a,int b,int c)x=a;y=b;z=c;void disp()coutx:y:zendl;void main()Time t1(10,10,10);t1.disp();2.设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。#include#includeusing namespace std;en
16、um Tsexmid,man,woman;class Personchar IdPerson19; /身份证号,18位数字char Name20; /姓名Tsex Sex; /性别int Birthday; /生日,格式1986年8月18日写作char HomeAddress50; /家庭地址public:Person(char *,char *,Tsex,int,char *);Person(Person &);Person();Person();void PrintPersonInfo();void inputPerson();Person:Person(char *id,char *na
17、me,Tsex sex,int birthday,char *homeadd)strcpy(IdPerson,id);strcpy(Name,name);Sex=sex;Birthday=birthday;strcpy(HomeAddress,homeadd);Person:Person()IdPerson0=0;Name0=0;Sex=mid;Birthday=0;HomeAddress0=0;Person:Person(Person & Ps)strcpy(IdPerson,Ps.IdPerson);strcpy(Name,Ps.Name);Sex=Ps.Sex;Birthday=Ps.B
18、irthday;strcpy(HomeAddress,Ps.HomeAddress);Person:Person()void Person:inputPerson()char ch;cout请输入身份证号,18位数字:endl;cin.getline(IdPerson,19);cout请输入姓名:endl;cin.getline(Name,20);cout请输入性别m或w:ch;if(ch=m) Sex=man;else Sex=woman;cout请输入生日,格式1986年8月18日写作:Birthday;cin.get(); /吸收回车符,否则地址输不进去cout请输入地址:endl;ci
19、n.getline(HomeAddress,50);void Person:PrintPersonInfo()int i;cout身份证号:IdPersonn姓名:Namen性别:;if(Sex=man)cout男n;else if(Sex=woman)cout女n;else cout n;cout出生年月日:;i=Birthday;couti/10000年;i=i%10000;couti/100月i%100日n家庭住址:HomeAddressn;int main()Person Ps1(,陈飞,man,安徽省安庆市怀宁县),Ps2(Ps1),Ps3;Ps1.PrintPersonInfo()
20、;Ps2.PrintPersonInfo();Ps3.inputPerson();Ps3.PrintPersonInfo();return 0;3.建立一个基类CBuilding,用来存储一座楼房的层数、房间数以及它的总平方英尺数。建立派生类Chousing,继承CBuilding,并存储下面的内容:卧室和浴室的数量。另外再建立派生类COfficBuilding,继承CBuilding,并存储灭火器和电话的数目。然后编写应用程序,建立住宅对象和办公楼对象,并输出它们的有关数据。编写成为一个完整的程序。*/#include#includeusing namespace std;class cbu
21、ilding protected:int floor,rooms,area;public: cbuilding(int f,int r,int a) floor=f; rooms=r;area=a; ; class chousing: public cbuilding int bedrooms,bathrooms; public: chousing( int f,int r,int a,int b,int ba):cbuilding( f, r, a) bedrooms=b; bathrooms=ba; void display() coutthe number of floor is flo
22、orendl; coutthe number of rooms is roomsendl; coutthe number of area is areaendl; coutthe number of bedrooms is bedroomsendl; coutthe number of bathrooms is bathroomsendl; ; class cofficebuildings: public cbuilding int fires,phones; public: cofficebuildings( int f,int r,int a,int b,int ba):cbuilding
23、( f, r, a) fires=b; phones=ba; void display() coutthe number of floor is floorendl; coutthe number of rooms is roomsendl; coutthe number of area is areaendl; coutthe number of fires is firesendl; coutthe number of telephones is phonesendl; ; void main() chousing house(1,2,3,4,5); cofficebuildings office(6,7,8,9,10); house.display(); office.display();