高级语言程序设计(C++II)练习题
C++辅导资料
《C++Ⅱ》试卷 (№ A03Ⅱa)
计算机学院《C++Ⅱ》试卷
========================
【注意事项】 1. 严格遵守考场纪律,考试时间120分钟。
2. 试卷共6页。答卷上必须填写参考人所属的学院名称、专业及本人姓名。
3. 试题总分100分。所有作答必须按题号对应填写在答卷上,否则无效。
4. 考试结束,试卷、答卷和草稿纸必须完整无损地一起递交。
一、给出一个有理数类,实现有理数的加法运算。请按后列要求作答。
1.仔细、完整地阅读程序,对应题号填写注释。注释的内容包括两部分:1.本行的语句是
什么;2.简述其功能或特点。例如,注释可以这样写:“友员函数;重载加法运算符(+)。” (每小题1分,共10 分)
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
class Rational
{ private:
int numerator,denominator; //(例)数据成员;表示一个有理数的分子、分母。 int maxcommonFactor(int,int);
void simplify( );
void DtoF(double,int&,int&);
public:
Rational(int n,int d=1);
Rational(double x=0);
~Rational();
void plus(const Rational&); Rational operator + (const Rational&); //(例)公有成员函数;重载加法运算符(+)。 void showFraction( );
operator double( );
friend ostream &operator<<
(ostream &output, Rational &t);
};
2. 对应题号把函数的定义补充完整。(每小题3分,共9 分)
int Rational::maxcommonFactor(int a,int b)
void Rational::simplify( )
{int temp=maxcommonFactor(abs(numerator),abs(denominator));
if(temp==1)return; numerator/=temp;denominator/=temp; return;}
void Rational::DtoF(double x,int & n,int & d)
第 1 页 共 6 页
C++辅导资料
《C++Ⅱ》试卷 (№ A03Ⅱa)
{double s=fabs(x); d=1; while((s*d-int(s*d))>1e-15)d*=10;n=int(x*d);}
Rational::Rational(int n,int d)
{if(d==0) {cout<<"错误! 分母不能为0。有理数将置为0。"<<endl;
numerator=0; denominator=1;}
;}
simplify(); }
Rational::Rational(double x)
{DtoF(x,numerator,denominator);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.denominator+denominator*t.numerator;
temp.denominator=denominator*t.denominator;
temp.simplify(); return temp;}
void Rational::showFraction( )
{if(numerator<0 && denominator<0 || numerator>=0 && denominator>0)
cout<<abs(numerator)<<"/"<<abs(denominator);
else cout<<"-"<<abs(numerator)<<"/"<<abs(denominator);}
Rational::operator double()
{return ostream &operator <<(ostream &output, Rational &t)
{output<<t.numerator<<'/'<<t.denominator; return output;}
void main()
{ Rational a; cout<<double(a); cout<<endl;
Rational b(2,0); b.showFraction(); cout<<endl;
Rational c(3,4); c.showFraction(); cout<<endl;
Rational d(1.2); d.showFraction(); cout<<endl;
a=b+c; cout<<double(a); cout<<endl;
}
3. 根据题目要求,按对应题号作答。(每小题3分,共21
分)
·写出上述程序的运行结果。
·在上述程序中,使用成员函数重载加法运算符(+)。现假设要改用友员函数重载加法运算符(+),下面给出了函数体,请写出相应的函数原型(
声明)和函数头。
函数原型 第 2 页 共 6 页
C++辅导资料
《C++Ⅱ》试卷 (№ A03Ⅱa)
函数体 {Rational temp(0,1);
temp.numerator=t1.numerator*t2.denominator+t1.denominator*t2.numerator; temp.denominator=t1.denominator*t2.denominator;
temp.simplify(); return temp; }
·在上述程序中,构造函数出现重载,我们按其定义的先后分别称为构造函数1和构造函数2。注意到main函数中依次定义了对象a,b,c,d。请你分别写出这四个对象的初始化各自调用的是哪一个构造函数。
对象a初始化
对象b初始化
对象
c初始化 对象d初始化
·在上述程序中,请你补充一个复制构造函数的定义,要求用内联函数实现。
复制构造函数和重载赋值运算符函数虽然都是实现数据成员的复制,但执行时机不同。当函数返回类类型时,
也要通过复
·假设在上述程序的基础上,于main函数末尾处添加一行:
for(int i=0;i<=1;i++)c.plus(c+d); cout<<double(c)<< ','<< double(d)<<endl;
写出这段语句的运行结果。
二、给出一些类的定义,按要求作答。
1. (每小题3分,共18分)
//类A
#include<iostream.h>
class A
{ private: double x;
public:
A(double px=1):x(px){ }
double getx( ) const {return x;}
void show( ){cout<<"x="<<x<<endl;}
} ;
//类B私有继承类A,类B的定义及main函数如下:
class B: private A
{ private: double x;
public :
B(double px=2): x(px){ } //类B构造函数定义
void show( ){cout<<getx( )<<endl;}
} ;
void main( ) { A a; a.show( ); B b(3); b.show( ); }
第 3 页 共 6 页
C++辅导资料
《C++Ⅱ》试卷 (№ A03Ⅱa)
·执行上述程序,运行结果为:
·若把类B构造函数定义改为 B(double px=2):A(px){ } ,则程序运行结果为:
· 改写上述程序中的类B构造函数定义 B(double px=2): x(px){ }。要求不使用“初始化式”,但函数的功能不变,且内联函数的形式也不变。按要求,类B构造函数定义可以改写成:
·有时需要复制A类对象的数据去创建B类对象,请用内联函数的形式写出类B的重载构造函数:
·假设在上述main函数的末尾添加一句:cout<<b.getx( )<<endl; 因getx( )私有,不可访问。请你在类B的定义中作一声明,保持getx( )仍为公有,使添加的语句可以运行。该声 …… 此处隐藏:3118字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




