C期末模拟试题及答案.docx
- 文档编号:28789245
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:20.06KB
C期末模拟试题及答案.docx
《C期末模拟试题及答案.docx》由会员分享,可在线阅读,更多相关《C期末模拟试题及答案.docx(18页珍藏版)》请在冰豆网上搜索。
C期末模拟试题及答案
C++期末模拟试题及答案
一、选择题(每题2分,共40分)
1、面向对象程序设计将描述事物的数据与封装在一起,作为一个相互依存、不可分割的整体来处理。
A)信息
B)数据隐藏
C)对数据的操作
D)数据抽象
2、下列语句中,错误的是。
A)int*p=newint(5);
B)int*p=newint[5];
C)int*p=newint[20][(0);
D)int*p=newint;
3、下面有关类和对象的说法中,正确的是。
A)系统为类和对象分配内存空间
B)类和对象没有区别
C)系统为类分配存储空间,不为对象分配存储空间
D)类与对象的关系和数据类型与变量的关系类似
4、下列有关类和对象的说法中,不正确的是。
A)任何一个对象只能属于一个类
B)对象是类的一个实例
C)类实质上是一种数据类型
D)一个类只能有一个对象
5、下列说法中,不正确的是。
A)要在类的外部直接使用类的私有成员是错误的
B)一个对象数组中的所有数组元素属于同一个类
C)当在类外部定义成员函数时,必须在函数名前加上类名和作用域运算符
D)同一个类的两个对象占用相同的内存空间
6、在声明类时,下面的说法正确的是。
A)数据成员的数据类型可以是register
B)可以在类的声明中给数据成员赋初值
C)没有用private,public,protected定义的数据成员是公有成员
D)定义时,private,public,protected可以按任意顺序出现
7、下列关于构造函数的描述中,正确的是。
A)构造函数必须带有参数
B)构造函数可以带有返回值
C)构造函数的名字与类名完全相同
D)构造函数必须定义,不能默认
8、下列有关析构函数叙述中,不正确的是。
A)析构函数必须与类名相同,并在其前面加上符号~,以便和构造函数名区别
B)析构函数不能带有任何参数,不能有返回值
C)析构函数可以重载
D)对于全局定义的对象,在程序开始时调用构造函数,到程序结束时调用析构函数
9、关于成员函数特征的下列叙述中,是错误的。
A)成员函数一定是内联函数
B)成员函数可以重载
C)成员函数可以设置参数的默认值
D)成员函数可以是静态的
10、下列说法中,不正确的是。
A)利用常对象只能调用类中的常成员函数
B)类的常数据成员和引用成员必须在构造函数的初始化表中进行初始化
C)常成员函数可以对类中的任何数据成员进行更新
D)在程序中既可以定义指针数据成员,也可以定义对象指针
11、友元函数的作用是。
A)提高程序的运行效率
B)加强类的封装性
C)实现数据的隐藏性
D)增加成员函数的种类
12、在下列有关静态成员函数的描述中,正确的是。
A)静态成员函数只能在类外定义
B)在静态成员函数中可以使用this指针
C)在建立对象前,就可以为静态数据成员赋值
D)静态成员函数在类外定义时,要用static前缀
13、使用派生类的主要原因是。
A)提高程序的运行效率
B)加强类的封装性
C)提高代码的可重用性
D)实现数据的隐藏
14、下列说法,不正确的是。
A)函数在重载时其函数名应相同
B)基类中定义了虚函数ab(int,int),若在派生类中重新定义ab(int),则在派生类中ab为重载函数
C)C++中所有运算符都可以重载
D)对于基类中定义的运算符重载函数,派生类中不一定可以继承
15、下列叙述中,不正确的说法是。
A)不能直接由抽象类建立对象
B)至少有一个纯虚函数的类称为抽象类
C)抽象类中能包含构造函数
D)抽象类中不能有数据成员
16、下列说法中,不正确的是。
A)在派生过程中构造函数不被继承
B)在派生过程中析构函数不被继承
C)声明为指向基类对象的指针可以指向其公有派生的对象
D)声明为指向公有派生类对象的指针可以指向其基类的对象
17、关于虚函数的描述中,正确的是。
A)虚函数是一个static类的成员函数
B)虚函数是一个非静态成员函数
C)派生类的虚函数与基类的虚函数具有不同的参数个数和类型
D)内联函数、构造函数、静态变量可以声明为虚函数
18、模板的使用是为了。
A)实现多态性
B)提高代码的运行效率
C)加强类的封装性
D)提高代码的可重用性
19、下列说法中,不正确的是。
A)类模板代表一个具体的、实际的类
B)函数模板经实例化生成的具体函数称为模板函数
C)在template语句与函数模板定义语句间不允许有别的语句
D)模板函数类似于重载函数,只是更严格一些
20、当包含头文件iostream.h后,一个C++源程序中的cin是。
A)一个标准语句。
B)预定义的类。
C)预定义的函数。
D)预定义的对象。
二、判断题(每题1分,共10分)
1、面向对象方法中的抽象,是指对具体问题进行概括,抽出一类对象的公共性质并加以描述的过程。
2、多态性是指一段程序能够处理多种类型对象的能力。
3、保护类型成员的性质和私有成员的性质相似,差别在于继承过程中对产生的新类影响不同。
4、拷贝构造函数是使用一个已经存在的对象,去初始化同类的一个新对象。
5、UML中的图形的作用是描述软件中类和对象以及它们的静态关系。
6、静态数据成员具有静态生存期。
7、条件编译是指程序中的某些内容要在满足一定条件的情况下才参与编译。
8、默认的拷贝构造函数完成的是深拷贝。
9、当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,基类的私有成员在派生类中不能直接访问。
10、如果基类声明了带有形参表的构造函数时,派生类就应当声明构造函数。
三、程序填空题(每题5分,共10分)
1、按照程序执行结果,填入合适语句:
#include
usingnamespacestd;
classTest{
private:
intn;
staticintm;
public:
intp;
staticintq;
Test(intarg);
staticvoiddisp1();
voiddisp2();
};
___
(1)_________
___
(2)_________
Test:
:
Test(intarg)
{
n=arg;
p=arg;
}
voidTest:
:
disp1()
{cout<<”m=”< voidTest: : disp2() {cout<<”m=”< cout<<”n=”< intmain() { Testobj1 (2); cout<<”p=”< : q< Test: : disp1(); obj1.disp2(); return0; } 程序执行结果: p=2,q=20 m=10,q=20 m=10,q=20 n=2,p=2 2、按照程序执行结果,填入合适语句: #include #include usingnamespacestd; intcount(char*str) { inti,num=0; for(i=0;str[i];i++) { ____ (1)_____________ num++; } ____ (2)_____________ } intmain() { chartext[100]; cout<<”输入一句英语: ”< gets(text); cout<<”这个句子里有”< ”< return0; } 程序执行结果: 输入一句英语: Itisveryinteresting! 这个句子里有19个字母。 四、程序阅读题(共20分) 1、阅读下面的程序,写出程序运行结果: (5分) #include #include #include #include usingnamespacestd; intmain() { vector vector : iteratorpi; pi=A.begin();*pi++=51;*pi++=61;*pi++=51;*pi++=81; cout<<*(A.begin()+1)< cout<<*find(A.begin(),A.end(),51)< cout< reverse(A.begin(),A.end()); for(pi=A.begin();pi! =A.end();pi++)cout<<*pi<<""; cout< sort(A.begin(),A.end()); for(pi=A.begin();pi! =A.end();pi++)cout<<*pi<<""; cout< return0; } 2、阅读下面的程序,写出程序运行结果: (5分) #include usingnamespacestd; classA{ public: virtualvoidfunc(intdata){cout<<"classA: "< virtualvoidfunc(char*str){cout<<"classA: "< voidfunc(){cout<<"classA"< }; classB: publicA{ public: voidfunc(intdata){cout<<"classB: "< voidfunc(char*str,inti){cout<<"classB: "< voidfunc(){cout<<"classB"< }; intmain(intargc,char*argv[]){ A*pa; Bb; pa=&b; pa->func (1); pa->A: : func (1); pa->func("haha"); b.func("haha",2); pa->func(); return0; } 3、阅读下面的程序,写出程序运行结果: (6分) #include #include usingnamespacestd; classCreateAndDestroy{ public: CreateAndDestroy(intvalue,charstr[20]){ data=value; strcpy(memo,str); cout<<"Object"< } ~CreateAndDestroy(){ cout<<"Object"< } private: intdata; charmemo[20]; }; CreateAndDestroyfirst(1,"first"); voidcreate(void){ CreateAndDestroyfifth(3,"fifth"); } intmain(){ create(); CreateAndDestroyfourth(2,"fourth"); return0; } 4、阅读下面的程序,写出程序运行结果: (4分) #include usingnamespacestd; classCRange{ public: intindex; CRange(inti){index=i;} }; classCString{ chara[100]; intlen; public: CString(char*s){ len=strlen(s); strcpy(a,s); } char&operator[](inti){ if(i>=0&&i elsethrowCRange(i); } }; intDisplayHasCatch(CString&s){ try{ intj; for(j=0;j<20;j++)cout< } catch(CRanger){ cerr< "< "< } return99; } intmain() { CStringS("ABC"); inti=DisplayHasCatch(S); return0; } 五、编程题(共20分) 1、根据下面的要求,完成程序编写,要求包含main函数并在main中使用所定义类的对象。 (12分) 1)定义一个日期类Date,包含年、月、日; 2)定义一个人事管理的Person类,要求包含身份证号pid、出生日期birthday、性别sex、姓名name、通讯地址address等属性。 其中出生出生日期是日期类的对象; 3)要求Date有构造函数(带默认参数)、显示属性函数showDate();Person有构造函数(带默认参数,同时传递给基类构造函数)、显示属性函数showPerson()。 2、根据下面的要求,完成程序编写,要求包含main函数并在main中定义和使用所设计类的对象和对象的运算。 (8分) 1)编写一个复数类Complex,包含实部real和虚部imag; 2)为类Complex以成员方式重载运算+、-,使得程序能满足: Complexc1(5,6),c2(7,8),c3,c4; c3=c1+c2; c4=c1-c2; 3)用成员函数show()输出复数加减后的运算结果。 参考答案 一、选择题(每题2分,共40分) 1~5CCDDD6~10DCCAC11~15ACCCD16~20DBDAD 二、判断题(每题1分,共10分) 1~5TFTTT 6~10TTFFF 三、程序填空题(每行2.5分,共10分) 1、 (1)intTest: : m=10; (2)intTest: : q=20; 2、 (1)if((str[i]>=’a’&&str[i]<=’z’)||(str[i]>=’A’&&str[i]<=’Z’)) (2)returnnum; 四、程序阅读题: (每题4-7分,共20分) 1、(5分) 61 51 2 81516151 51516181 2、(5分) classB: 1 classA: 1 classA: haha classB: haha2 classA 3、(6分) Objectfirstconstructor Objectfifthconstructor Objectfifthdestructor Objectfourthconstructor Objectfourthdestructor Objectfirstdestructor 4、(4分) A B C 字符串下标: 3超界! 五、编程题(共20分,共2题) 1.(12分) /* 参考程序中不含日期的合法性校验等细节 只提供主要知识点参考 细节部分由改卷老师酌情给分 main函数/2分/类对象定义使用 Date类/4分/类定义、构造函数 Person类/6分/类定义、继承、构造函数 */ #include #include usingnamespacestd; classDate{ private: intyear; intmonth; intday; public: Date(inty=1990,intm=1,intd=1){year=y;month=m;day=d;} voidshowdate(){cout<<"YEAR="< }; classPerson: publicDate{ private: stringpid; stringsex; stringname; stringaddress; Datebirthday; public: Person(stringp="",strings="",stringn="",stringa="",inty=1990,intm=1,intd=1): birthday(y,m,d){ pid=p; sex=s; name=n; address=a; } voidshowperson(){ cout<<"身份证: "< cout<<"性别"< cout<<"姓名: "< cout<<"地址: "< cout<<"生日: "; showdate(); } }; intmain(){ Personp1("3326XXXX","男","张3","浙江宁波",1999,02,02); p1.showperson(); return0; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2.(8分) /* 参考程序中不含日期的合法性校验等细节 只提供主要知识点参考 细节部分由改卷老师酌情给分 main函数/2分/类对象定义使用 Complex/6分/类定义、构造函数、运算符重载、show函数 */ #include #include usingnamespacestd; classComplex{ private: doublereal; doubleimag; public: Complex(doubler=0,doublei=0){real=r;imag=i;} Complexoperator+(Complexc2){ Complexcc; cc.real=real+c2.real; cc.imag=imag+c2.imag; returncc; } Complexoperator-(Complexc2){ Complexcc; cc.real=real-c2.real; cc.imag=imag-c2.imag; returncc; } voidshow(){ cout<<"实部"< } }; intmain(){ Complexc1,c2(5,6),c3,c4; c3=c1+c2; c4=c1-c2; c3.show(); c4.show(); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期末 模拟 试题 答案