西南交大C++2008-2009年期末试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考试试卷
课程代码 3200566 课程名称 面向对象C++ 考试时间120分钟
阅卷教师签字:
答题说明:① 考试形式:闭卷;② 考试时间:120分钟; ③ 全部答案请写在答题卷上,试题卷上作答无效。
试题卷A
一、填空题(每空1分,共32分)
1. “面向对象编程”的英文缩写是 (1) 。
2. 使用关键字struct 定义类时,缺省的成员访问权属性是 (2) 。
3. C++的重载(overload)分为两种,即 (3) 重载和 (4) 重载。
4. 执行语句int a=1, b=2, &p=a, &q=p; q=b; cout<
5. C++的内联函数应使用关键字 (7) 进行声明。
6. 非成员函数应声明为类的 (8) 函数才能访问这个类的private 成员。
7. 已知MyClass 是一个用户自定义类的类名,若有定义:MyClass a[6], b; 则系统自动调用该类构造函数 (9) 次;当标识符a 和b 离开它的作用域时,系统将自动调用该类的析构函数 (10) 次。
8. 在一个成员函数内调用虚函数时,对该虚函数的调用进行 (11) 联编;含有纯虚函数的类称为 (12) 类,它只能作为基类使用。
9. 用new 命令创建一个3行4列int 型二维数组,数组名为w, 正确的语句是 (13) 。 10. 在C++的流类库中,根基类为 (14) 。
11. 执行try{cout<<'A'; throw 0; cout<<'B'; }catch(int){} cout<<'C'; 的输出是 (15) 。 12. 以下程序在字符文件ABC.TXT 中输出如下所示字符图形,请填空使之完整。 * *** ***** ******* ********* #include
班 级 学 号 姓 名
密封装订线 密封装订线 密封装订线
{ int n;
cout<<"请输入打印行数n=";cin>>n;
ofstream f( (16) );
for(int i=1;i<=n;i++)
{ f< for(int j=1;j<= (18) ;j++) f<<"*"; f<< (19) ; } f.close(); } 13. 类A定义了拷贝构造函数并且主程序的输出为 100,请填空使程序完整。 #include using namespace std; class A { private: int x; public: A() { x=100; } A(A &u) { (20) } void prt() { cout< }; void main() { A *p= (21) , v( (22) ); v.prt(); } 14. 下面程序的运行结果如下: Derive1:1 Derive2:2 根据结果将程序补充完整。 #include using namespace std; class Base { protected: int b; public: Base(int i) { b=i;} virtual void print() (23) ; //纯虚函数 }; class Derive1:public Base { public: Derive1(int i) { b=i; } void print() { cout<<"Derive1:"< }; class Derive2:public Base { public: Derive2(int i): (24) { } void print() { cout<<"Derive2:"< }; void func( (25) ) { ptr->print(); } void main() { Derive1 obj1(1); Derive2 *p2= (26) ; func( (27) ); func(p2); } 15. 以下类模板实现下标从1开始的N元一维数组;主程序产生的输出是12345。请填空 使程序完整。 #include using namespace std; template< (28) , int N> class CVect { private: T *buf; public: CVect() { buf=new T[N]; } //构造函数 ~CVect() { delete (29) ; } //析构函数 (30) operator[](int i) //重载[]运算符 { if(i>N||i<1) throw "错误: 下标超范围!"; return *(buf+i-1); } }; void main() { CVect (31) ;