模拟试题一答案.docx
- 文档编号:18037740
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:17
- 大小:18.84KB
模拟试题一答案.docx
《模拟试题一答案.docx》由会员分享,可在线阅读,更多相关《模拟试题一答案.docx(17页珍藏版)》请在冰点文库上搜索。
模拟试题一答案
《C++程序设计》模拟试题
(一)
一、选择题(本大题共10小题,每小题2分,共20分)
1.C++源程序文件扩展名为(B)。
A..hB..cppC..1ibD..obj
2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是(A)。
A.cinB.coutC.cerrD.clog
3.对于类中没有设置访问属性的数据成员,其默认为(C)。
A.publicB.protectedC.privateD.static
4.下列关于类和对象的叙述中,错误的是(A)。
A.一个类只能有一个对象B.对象是类的具体实例
C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系
5.类的构造函数是在定义该类的一个(C)时被自动调用执行的。
A.成员函数B.数据成员C.对象D.友元函数
6.派生类的对象可以访问以下哪种情况继承的基类成员(D)。
A.私有继承的私有成员B.公有继承的私有成员
C.私有继承的保护成员D.公有继承的公有成员
7.intFunc(int,int);不可与下列哪个函数构成重载(B)。
A.intFunc(int,int,int);B.doubleFunc(int,int);
C.doubleFunc(double,double);D.doubleFunc(int,double);
8.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A.intAA:
:
a()B.intAA:
a()
C.AA:
:
a()D.AA:
:
inta()
9.设函数voidswap(int,int)将交换两形参的值,如两整型变量inta=10;intb=15;则执行swap(a,b)后,a、b值分别为(B)。
A.10,10B.10,15
C.15,10D.15,15
10.当一个类A或函数f()被声明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。
A.只能是公有成员B.只能是保护成员
C.只能是除私有成员之外的任何成员D.任何权限的成员
二、填空题(本大题共10小题,每小题2分,共20分)
1.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用iostream.h头文件。
2.同一个函数名可以对应着多个不同的函数实现,每一类实现对应着一个函数体,称为函数重载。
3.在C++中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为this指针。
4.假定A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为x.a()。
5.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为n-1。
6.在C++中,对于基类的protected成员,当以public方式派生一个新类时,该成员将成为派生类的protected成员。
7.能够用来作为基类派生出新类,却不能创建自己的对象的类称为抽象类。
8.在C++程序中使用的cout标识符是系统类库中定义的ostream类中的一个对象。
9.若x=5,y=10,则x>y的逻辑值为False。
10.执行“charch=14*5+2;cout< 三、阅读下列程序,写出执行结果(本大题共5小题,每小题4分,共20分) 1. #include voidmain() { inta[9]={2,4,6,8,10,12,14,16,18}; for(inti=0;i<9;i++) { cout< if((i+1)%3==0) cout< } } 运行结果: 246 81012 141618 2. #include #include voidmain() { char*a[5]={"student","worker","cadre","soldier","peasant"}; char*p1,*p2; p1=p2=a[0]; for(inti=0;i<5;i++) { if(strcmp(a[i],p1)>0) p1=a[i]; if(strcmp(a[i],p2)<0) p2=a[i]; } cout< } 运行结果: worker,cadre 3. #include usingnamespacestd; classSimple { intx,y; public: Simple(){x=y=0;} Simple(inti,intj){x=i;y=j;} voidcopy(Simple&s); voidsetxy(inti,intj) {x=i;y=j;} voidprint() {cout<<"x="< }; voidSimple: : copy(Simple&s) { x=s.x; y=s.y; } voidfunc(Simples1,Simple&s2) { s1.setxy(30,40); s2.setxy(70,80); } voidmain() { Simpleobj1(1,2),obj2; obj2.copy(obj1); func(obj1,obj2); obj1.print(); obj2.print(); } 运行结果: x=1,y=2 x=70,y=80 4. #include classA { public: A(); voidShow(); ~A(); private: staticintc; }; intA: : c=0; A: : A() { cout<<"constructor."< c+=10; } voidA: : Show() { cout<<"c="< } A: : ~A() { cout<<"destructor."< } voidmain() { Aa,b; a.Show(); b.Show(); } 运行结果: constructor constructor c=20 c=20 destructor destructor 5. #include classbase { intn; public: base(){}; base(inta) { cout<<"constructingbaseclass"< n=a; cout<<"n="< } ~base(){cout<<"destructingbaseclass"< }; classsubs: publicbase { intm; public: subs(inta,intb): base(a) { cout<<"constructingsubclass"< m=b; cout<<"m="< } ~subs(){cout<<"destructingsubclass"< }; voidmain() { subss(1,2); } 运行结果: constructingbaseclass n=1 constructingsubclass n=2 destructingsubclass destructingbaseclass 四、完成程序题(本大题共5小题,每小题4分,共20分) 1. #include classSample { intx,y; public: Sample() {x=y=1;} Sample(inta,intb) { x=a; y=b; } voiddisp() { cout<<"x="< } }; voidmain() { Samples1,s2(2,3); s1.disp(); s2.disp(); } 输出结果为: x=0,y=0 x=2,y=3 2.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。 #include usingnamespacestd; constdoublepi=3.14159; voidmain() { doubler; cout<<"r="; cin>>r; doublel=2.0*pi*r; doubles=pi*r*r; cout<<"Thelongis: "< cout<<"Theareais: "< } 3. #include usingnamespacestd; voidmain() { floata,b; floatcha(floatx,floaty);//函数cha的原型声明 a=12.5; b=6.5; floatc=cha(a,b);//调用函数cha cout< } floatcha(floatx,floaty) { floatw; w=x-y; returnw; } 4.根据输出结果,在下划线处填上正确的语句。 #include classBase { public: virtualvoidPrint() { cout<<"Base: : Print"< } }; classClassA: publicBase { public: voidPrint() {cout<<"ClassA: : Print"< }; classClassB: publicBase { public: voidPrint() {cout<<"ClassB: : Print"< }; voidmain() { ClassAa; ClassBb; Base*p; p=&a; p->Print(); p=&b; p->Print(); } 输出结果为: ClassA: : Print ClassB: : Print 5. #include usingnamespacestd; template Tfun(Tx)//定义函数模板 { Ty; y=x*x; returny; } voidmain() { floata=2.5; cout< } 五、编程题(本大题共2小题,每小题10分,共20分) 1.创建一个雇员类employee,其数据成员有姓名、街道地址、市、省和邮政编码,将该类的对象数据打印出来。 解: #include #include classemployee { protected: charname[10];//姓名 charstreet[20];//街道地址 charcity[10];//市 charprov[10];//省 charpost[7];//邮政编码 intno;//记录序号 public: employee(char[],char[],char[],char[],char[],int); voidchangename(charstr[]); voiddisplay(); }; employee: : employee(charn[],chars[],charc[],charp1[],charp2[],intnum) { strcpy(name,n); strcpy(street,s); strcpy(city,c); strcpy(prov,p1); strcpy(post,p2); no=num; } voidemployee: : display() { cout<<"输出记录"< cout<<"姓名: "< cout<<"街道地址: "< cout<<"市: "< cout<<"省: "< cout<<"邮政编码"< } voidmain() { employeeobj1("王华","中华路15号","武汉市","湖北省","430070",1); employeeobj2("杨丽","天津路30号","南京市","江苏市","210020",2); obj1.display(); obj2.display(); } 运行结果: 输出记录1 姓名: 王华 街道地址: 中华路15号 市: 武汉市 省: 湖北省 邮政编码: 430070 输出记录2 姓名: 杨丽 街道地址: 天津路30号 市: 南京市 省: 江苏省 邮政编码: 210020 2.设计一个学生类student,包括数据成员姓名和三门课程成绩,利用重载运算符“+”将所有学生的成绩相加放在一个对象中,再对该对象求各门课程的平均分。 解: #include #include #include classstudent { charname[10]; intdeg1,deg2,deg3; public: student(){} student(charna[],intd1,intd2,intd3) { strcpy(name,na); deg1=d1;deg2=d2;deg3=d3; } friendstudentoperator+(students1,students2) { staticstudentst; st.deg1=s1.deg1+s2.deg1; st.deg2=s1.deg2+s2.deg2; st.deg3=s1.deg3+s2.deg3; returnst; } voiddisp() { cout< } friendvoidavg(student&s,intn) { cout< } }; voidmain() { students1("Li",78,82,86),s2("Zheng",75,62,89); students3("Ma",89,87,95),s4("Xu",54,78,66),s; cout<<"输出结果"< s1.disp(); s2.disp(); s3.disp(); s4.disp(); s=s1+s2+s3+s4; avg(s,4); } 运行结果: 输出结果 Li788286 Zheng756289 Ma898795 Xu547866 平均分747784
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟试题一 答案 模拟 试题