收藏 分销(赏)

C++(2)试题A卷及其答案 (1).doc

上传人:二*** 文档编号:4414798 上传时间:2024-09-19 格式:DOC 页数:9 大小:54KB
下载 相关 举报
C++(2)试题A卷及其答案 (1).doc_第1页
第1页 / 共9页
本文档共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 页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服