C++(2)试题A卷及其答案.doc
《C++(2)试题A卷及其答案.doc》由会员分享,可在线阅读,更多相关《C++(2)试题A卷及其答案.doc(9页珍藏版)》请在咨信网上搜索。
姓名 学号 学院 专业 座位号 ( 密 封 线 内 不 答 题 ) ……………………………………………………密………………………………………………封………………………………………线……………………………………线……………………………………… _____________ ________ … 诚信应考 ,检验 作弊 将带来严格 后果! 华南理工大年夜 学期末检验 《低级 语言 次序 方案 〔2〕》试卷A 本卷须知:1. 考前请将密封线内各项信息填写明晰 ; 2. 所有 答案 写在答题纸上,答在不的 所在 无效; 3. 试卷可做草稿纸,试卷必须 与答题纸同时提交; 4.检验 办法 :闭卷; 5. 本试卷共五大年夜 题,总分值100分,检验 时辰 120分钟。 一.单项选择 题〔每题2分,共20分〕 精选可编辑 1.在C++中,有关类跟 东西 精确 说法是( A )。 3 A.东西 是类的一个实例 B.东西 是类的存储空间 C.一个类只能有一个东西 D.类是次序 包,东西 是存储空间 2.在类定义 中,称为接口的成员是( C )。 A. 所有 类成员 B. private或protected的类成员 C. public的类成员 D. public或private的类成员 3. 一个类的友员函数可以 通过( D )访征询 该类的所有 成员。 A.静态数据 B.析构造函数 C.this指针 D.类东西 参数 4. 下面描画差错 的选项是( B )。 A.自定义 构造函数该当 是公有成员函数 B.构造函数可以 是虚函数 C.构造函数在树破 东西 时自动 调用 实行 D.构造函数可以 重载 5. 在类的承袭关系 中,基类的〔 B 〕成员在派生类中可见。 A. 所有 B. public跟 protected C. 只要 public D. 只要 protected 6.设B类是A类的派生类,有说明语句 A a, *ap; B b, *bp; 那么以下精确 语句是〔 C 〕。 A. a=b; B. b=a; C. ap=&b; D. bp=&a; 7.C++中,以下〔 D 〕语法办法 不属于运行 时的多态。 A. 按照if语句的求值决定 次序 流程 B. 按照基类指针指向东西 调用 成员函数 C. 按照switch语句的求值决定 次序 流程 D. 按照参数个数、典范 调用 重载函数 8. 假设 对A类定义 一个重载“+〞号运算符的成员函数,以便完成 两个A类东西 的加法,并前去 相加后果,那么该成员函数的函数原型为( B )。 A.A operator +( const A &A1, const A &A2 ); B.A A:: operator +( const A &A2 ); C.A::operator +( A &A2 ); D.A A::operator +( ); 9. 一个类模板定义 了静态数据成员,那么( A )。 A.每一个实例化的模板类都有一个自己的静态数据成员。 B.每一个实例化的东西 都有一个自己的静态数据成员。 C.它的典范 必须 是类模板定义 的抽象 典范 。 D.所有 模板类的东西 公享一个静态数据成员。 10.读一个C++数据文件,要创破 一个( A )流东西 。 A.ifstream B.ofstream C.cin D.cout 二.简答题〔每题4分,共20分〕 1.有右图所示类格。类X中有数据成员int a。按照以下函数注释的编译信息,分析int X::a的访征询 特点 ,class Y对class X跟 class Z对class Y的承袭性质 。 class X class Y class Z void Y::funY() { cout<<a<<endl; } //精确 void Z::funX() { cout<<a<<endl; } //差错 void main() { X x; Y y; Z z; cout<<x.a<<endl; //精确 cout<<y.a<<endl; //差错 cout<<z.a<<endl; //差错 } int X::a是class X的public数据成员,class Y为protected承袭class X,class Z为private承袭class Y。 2.有人定义 一个教师类派生一个老师 类。他认为 “姓名〞跟 “性不〞是教师、老师 共有的属性,声明 为public,“职称〞跟 “工资 〞是教师特有的,声明 为private。在老师 类中定义 特有的属性“班级〞跟 “效果〞。因而 有 class teacher { public: char name[20]; char sex; private: char title[20]; double salary; }; class student : public teacher { private: char grade[20] ; int score; }; 你认为 如斯 定义 适合吗?请做出你认为 公正 的类构造定义 。 class person { public: char name[20]; char sex; }; class teacher : public person { private: char title[20]; double salary; }; class student : public person { private: char grade[20] ; int score; }; 3.有类定义 class Test { int a,b; public: Test ( int m, int n ) { a=m; b=n; } void Set( int m, int n ) { a=m; b=n; } //…… }; 有人认为 “Test跟 Set函数的功能 一样,只要 定义 其中 一个就够了〞。这种说法精确 吗?什么缘故 ? 带参数的构造函数用于树破 东西 数据初始化,成员函数用于次序 运行 时修负数据成员的值。 4.假设 有声明 template <typename T> class Tclass { /*……*/ } ; 树破 一个Tclass东西 用以下语句 Tclass Tobj; 有差错 吗?假设 出错 ,请分析缘故,并写出一个精确 的说明语句。 不 实例化类属参数。 Tclass Tobj<int>; 5.C++的文本文件可以 用binary办法 打开 吗?假设 有以下语句 fstream of("d:testfile", ios::out|ios::binary); double PI=3.1415; 请写出把PI的值写入文件"d:testfile"末了 的语句。 可以 。 of.seekp(0,ios::end); of.write((char*)&PI, sizeof(double)); 三.阅读 以下次序 ,写出实行 后果〔每题6分,共24分〕 1. #include <iostream.h> //运算符重载 enum BoolConst { False=0 , True=1 }; //定义 列举 典范 class Boolean { public: Boolean(BoolConst x = False) { logic = x; } void print() const { logic? cout<<" TRUE " : cout<<" FALSE "; } friend Boolean operator +(const Boolean & obj1, const Boolean & obj2); friend Boolean operator *(const Boolean & obj1, const Boolean & obj2); protected: BoolConst logic; }; Boolean operator+ ( const Boolean & obj1, const Boolean & obj2 ) { return (obj1.logic||obj2.logic)?Boolean(True):Boolean(False); } Boolean operator* ( const Boolean & obj1, const Boolean & obj2 ) { return (obj1.logic && obj2.logic) ? Boolean(True) : Boolean(False); } void main() { Boolean a(False), b(True), c, d ; c = a * b; d = a + b; a.print(); b.print(); c.print(); d.print(); cout<<endl; } FLASE TRUE FALSE TRUE 2. #include <iostream.h> //模板,静态数据成员 template <typename T> class List { public: List(T x=0) { data = x; } void append(List *node ) { node->next=this; next=NULL; total++;} List *getnext() { return next; } T getdata() {return data; } static int total; private: T data; List *next; }; template <typename T> int List<T>::total=0; void main() { int i, n=5; List <int> headnode; List <int> *p, *last; last = &headnode; for( i=1; i<=n; i++ ) { p = new List<int>(i*2); p->append( last ); last = p; } p = headnode.getnext(); while( p ) { cout << p->getdata() <<" "; p = p->getnext(); } cout<<endl; cout<<"total="<<List<int>::total<<endl; } 2 4 6 8 10 Total=5 3. #include<iostream.h> //类成员 #include<math.h> class Point { public: Point(int x1=0, int y1=0) { x = x1; y = y1; cout<<"Point构造函数\n"; } int GetX() { return x; } int GetY() { return y; } private: int x; int y; }; class Distance { public: Distance(Point xp1, Point xp2); double GetDis() { return dist; } private: Point p1; Point p2; double dist; }; Distance::Distance(Point xp1, Point xp2): p1(xp1), p2(xp2) { cout<<"Distance构造函数\n"; double x = double(p1.GetX() - p2.GetX()); double y = double(p1.GetY() - p2.GetY()); dist = sqrt(x * x + y * y); } void main() { Point myp1(0,0), myp2(0,20); Distance mydist(myp1,myp2); cout<<"The distance is "<<mydist.GetDis()<<endl; } Point构造函数 Point构造函数 Distance构造函数 The distance is 20 4. 写出data.txt中的后果跟 屏幕表示 的后果。 #include <fstream.h> void main() { int a=10; double x=50.5; char str[10], fname[20] = "d:\\data.txt"; fstream iofile(fname,ios::out); if(!iofile) return; iofile<<"Data:\t"<<a+10<<" "<<x<<endl; iofile.close(); iofile.open(fname, ios::in); if(!iofile) return; iofile>>str>>a>>x; cout<<"string="<<str<<"\n"<<"a="<<a<<", x= "<<x<<endl; } Data.txt Data: 20 50.5 输出 string= Data: a=20, x=50.5 四. 按照次序 输出填空。〔每空2分,共24分〕 1. //成员跟 友员 #include<iostream.h> class Time { public: Time(int h, int m) {hours=h; minutes=m;} ________(1)________ Time12(); void ________(2)________ Time24(Time time); friend void private: int hours, minutes; }; _________(3)__________ Time12() void Time:: {if(hours>12) { cout<<hours-12<<":"<<minutes<<"PM\n" ; } else cout<<hours<<":"<<minutes<<"AM\n" ; } void Time24(Time time) { cout _______(4)________ ;} <<time.hours<<":"<<time.minutes<<"\n" void main() {Time T1(20,30), T2(10,45); T1.Time12(); Time24(T1); T2.Time12(); Time24(T2); } 次序 输出: 8:30PM 20:30 10:45AM 10:45 2. //虚承袭 #include<iostream.h> class A { public: A(const char *s){cout<<s<<'\t';} ~A(){} }; class B: (5) A virtual public { public: B(const char *s1, const char *s2):A(s1){cout<<s2<<'\t';} }; class C: (6) virtual public A { public: C(const char *s1, const char *s2):A(s1){ cout<<s2<<'\t';} }; class D:public B, public C { public: D(const char *s1,const char *s2,const char *s3,const char *s4) : (7) A(s1),B(s1,s2),C(s1,s3) {cout<<s4<<'\t';} }; void main() { D *ptr=new D("class A","class B","class C","class D"); delete ptr; } 次序 输出: class A class B class C class D 3. #include<iostream.h> //承袭 #include<string.h> class studentID { public: studentID ________(8)________ //(int d=0) 构造函数的默认 参数 { value=d; cout<<value<<'\t'; } ; protected: int value; } ; class student : public studentID { public: student ______(9)______ (char *pname="no name",int ssID=0):studentID(ssID) { strncpy(name, pname, sizeof(name)); name[sizeof(name)-1]='\0'; cout<<name<<'\n'; } ; protected: char name[20]; }; void main() { student s1("Ranry",9818) , s2("Jenny"), s3; } 次序 输出: 9818 Ranry 0 Jenny 0 no name 4. //多态 #include <iostream.h> class p_class { int num ; public : void set_num( int val ){ num=val;} void show_num( ) ; }; void p_class :: show_num( ){ cout<<num<< '\t';} void main() { p_class ob[3], *p ; for( int i=0; i<3;i++ ) ob[i].set_num((i+1)*15); (10) ; p->show_num( ); p=ob (11) ; p->show_num( ); p=ob+2 (12) ; p->show_num( ); p=ob+1 } 次序 输出: 15 45 30 五、完成 次序 。〔第1小题4分,第2小题8分,共12分〕 1.按照次序 输出,以最小办法 补偿 A类跟 B类的成员函数。 #include < iostream.h > class A { public : //A类的成员函数 virtual ~A(){cout<<"A_object destroyed.\n";} }; class B : public A { public : //B类的成员函数 ~B(){cout<<"B_object destroyed.\n";} }; void main ( ) { A * p=new B ; delete p; } 输出: B_object destroyed. A_object destroyed. 2.给出基类Figure定义 跟 main 函数如下: class Figure { protected : double x,y; public: void set(double i, double j=0) { x=i; y=j; } virtual void showarea()const = 0 ; }; #include<iostream.h> void main() { Triangle t; Square s; t.set(10.48,50); t.showarea(); s.set(888,100); s.showarea(); } 编写派生类Triangle跟 Square的最小定义 ,以便在main 函数中调用 派生类函数showarea()的差异 完成 版本求直角三角形跟 矩形的面积。 class Triangle : public Figure { public : void showarea()const { cout<< "Triangle with high "<<x<<" and base "<<y; cout<< " has an area of "<<x*0.5*y<<"\n"; } }; class Square : public Figure { public: void showarea()const { cout<<"Square with dimension "<<x<<"*"<<y; cout<<" has an area of "<<x*y<<"\n"; } }; 《低级 语言 次序 方案 〔C++II〕》试卷第 9 页 共 9 页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试题 及其 答案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文