高级语言程序设计(C++II)试卷doc

上传人:u**** 文档编号:183615342 上传时间:2021-06-09 格式:DOC 页数:7 大小:45KB
返回 下载 相关 举报
高级语言程序设计(C++II)试卷doc_第1页
第1页 / 共7页
高级语言程序设计(C++II)试卷doc_第2页
第2页 / 共7页
高级语言程序设计(C++II)试卷doc_第3页
第3页 / 共7页
高级语言程序设计(C++II)试卷doc_第4页
第4页 / 共7页
高级语言程序设计(C++II)试卷doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《高级语言程序设计(C++II)试卷doc》由会员分享,可在线阅读,更多相关《高级语言程序设计(C++II)试卷doc(7页珍藏版)》请在金锄头文库上搜索。

1、计算机学院C+试卷 =【考前须知】 1. 严格遵守考场纪律,考试时间120分钟。 2. 试卷共6页。答卷上必须填写参考人所属的学院名称、专业及本人姓名。3. 试题总分100分。所有作答必须按题号对应填写在答卷上,否那么无效。4. 考试结束,试卷、答卷和草稿纸必须完整无损地一起递交。一、给出一个有理数类,实现有理数的加法运算。请按后列要求作答。1仔细、完整地阅读程序,对应题号填写注释。注释的内容包括两部分:1.本行的语句是什么;2.简述其功能或特点。例如,注释可以这样写:“友员函数;重载加法运算符(+)。 每题1分,共10 分#include#include#includeclass Ratio

2、nal private:int numerator,denominator; /(例)数据成员;表示一个有理数的分子、分母。int maxcommonFactor(int,int); /(1) void simplify( ); /(2) void DtoF(double,int&,int&); /(3) public: Rational(int n,int d=1); /(4) Rational(double x=0); /(5) Rational(); /(6) void plus(const Rational&); /(7) Rational operator + (const Rati

3、onal&); /(例)公有成员函数;重载加法运算符(+)。 void showFraction( ); /(8) operator double( ); /(9) friend ostream &operator1e-15)d*=10;n=int(x*d);Rational:Rational(int n,int d) if(d=0) cout错误! 分母不能为0。有理数将置为0。endl; numerator=0; denominator=1; else (12) ; ; simplify(); Rational:Rational(double x) DtoF(x,numerator,den

4、ominator);simplify();Rational:Rational( ) void Rational:plus(const Rational& addend) numerator=addend.numerator*denominator+addend.denominator*numerator; denominator*=addend.denominator; simplify();Rational Rational:operator + (const Rational& t) Rational temp(0,1); temp.numerator=numerator*t.denomi

5、nator+denominator*t.numerator; temp.denominator=denominator*t.denominator; temp.simplify(); return temp;void Rational:showFraction( ) if(numerator0 & denominator=0 & denominator0) coutabs(numerator)/abs(denominator); else cout-abs(numerator)/abs(denominator);Rational:operator double() return (13) ;o

6、stream &operator (ostream &output, Rational &t) outputt.numerator/t.denominator; return output;void main() Rational a; coutdouble(a); coutendl; Rational b(2,0); b.showFraction(); coutendl; Rational c(3,4); c.showFraction(); coutendl; Rational d(1.2); d.showFraction(); coutendl; a=b+c; coutdouble(a);

7、 coutendl;3. 根据题目要求,按对应题号作答。每题3分,共21分写出上述程序的运行结果。 (14) 在上述程序中,使用成员函数重载加法运算符(+)。现假设要改用友员函数重载加法运算符(+),下面给出了函数体,请写出相应的函数原型(声明)和函数头。函数原型 (15) 函数头 (16) 函数体 Rational temp(0,1); temp.simplify(); return temp; 在上述程序中,构造函数出现重载,我们按其定义的先后分别称为构造函数1和构造函数2。注意到main函数中依次定义了对象a,b,c,d。请你分别写出这四个对象的初始化各自调用的是哪一个构造函数。 对象a

8、初始化: (17.a) ; 对象b初始化: (17.b) ;对象c初始化: (17.c) ; 对象d初始化: (17.d) ;在上述程序中,请你补充一个复制构造函数的定义,要求用内联函数实现。(18) 复制构造函数和重载赋值运算符函数虽然都是实现数据成员的复制,但执行时机不同。复制构造函数通常用于(19.a) 和传递对象参数,当函数返回类类型时,也要通过复制构造函数建立临时对象;重载赋值运算符函数用于(19.b) 。假设在上述程序的基础上,于main函数末尾处添加一行:for(int i=0;i=1;i+)c.plus(c+d); coutdouble(c) , double(d)endl;

9、写出这段语句的运行结果。 (20) 二、给出一些类的定义,按要求作答。1. 每题3分,共18分/类A#includeclass A private: double x;public: A(double px=1):x(px) double getx( ) const return x; void show( )coutx=xendl; ;/类B私有继承类A,类B的定义及main函数如下:class B: private A private: double x;public : B(double px=2): x(px) /类B构造函数定义 void show( )coutgetx( )endl

10、; ;void main( ) A a; a.show( ); B b(3); b.show( ); 执行上述程序,运行结果为: (21) 假设把类B构造函数定义改为 B(double px=2):A(px) ,那么程序运行结果为: (22) 改写上述程序中的类B构造函数定义 B(double px=2): x(px) 。要求不使用“初始化式,但函数的功能不变,且内联函数的形式也不变。按要求,类B构造函数定义可以改写成:(23) 有时需要复制A类对象的数据去创建B类对象,请用内联函数的形式写出类B的重载构造函数:(24) 假设在上述main函数的末尾添加一句:coutb.getx( )endl

11、; 因getx( )私有,不可访问。请你在类B的定义中作一声明,保持getx( )仍为公有,使添加的语句可以运行。该声明为:(25) 在类B公有段增加一个内联函数fetch的定义,其功能是返回B类对象数据x的平方值。(26) 2 每题3分,共18分以下程序中,类B1,B2虚继承类A,类C多继承B1,B2。按题目要求作答。注意A为虚基类,建立间接派生类对象时,只有一个a对象的数据成员版本。#includeclass A/长度x,y public: double x,y; A(double px=1,double py=1):x(px),y(py) virtual A( ) void show( )coutx,yendl; ;class B1: virtual public A /矩形面积 public : B1(double px=2, double py=2):A(px,py) void show()coutx*yendl; ;class B2: virtual public A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号