04级CPP2试卷.doc_第1页
04级CPP2试卷.doc_第2页
04级CPP2试卷.doc_第3页
04级CPP2试卷.doc_第4页
04级CPP2试卷.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 1 页 ( 共12 页 )上海大学20042005学年 冬 季学期试卷(A卷)课程名: 高级语言程序设计(二) 学分: 4 (闭卷) 学号:_ 姓名:_ 院、系:_题号一(20)二(20)三(15)四(30)五(15)得分 一填空题(每空1分,共20分)1.填空,使程序中的max()函数、函数模板返回参数中较大者,并指出运行结果。#include #include template max(T x, T y)if(xy) ;else ;/ 为了使max()函数还能处理字符串的内容,重载该模板 max(char *x, char *y)if( 0)return x;elsereturn y;void main()cout max(3, 5) endl;cout max(3.5, 5.5) endl;cout max(b, a) endl;cout max(”abc”, ”abcd”) endl;cout max(”xyz”, ”xyz”) endl;运行结果: 成绩得分第 2 页 ( 共 12 页 )2. 填空,完成如下的Point类模板。#include class Point :Point(T x, T y) ; ;void SetPoint( )_x = x;_y = y;void Display()cout ”(” _x ”, ” _y ”)” endl;protected:T _x, _y;void main()Point a(-1, 2);Point b(1, 2);Point c(a, b);Point d(3.5, 5.5);a.Display();b.Display();c.Display();d.Display();运行结果: 第 3 页 ( 共 12 页 )得分二(共20分)完成类成员函数定义,并回答问题。#include class RMBpublic:RMB(unsigned int x=0);/ 本函数定义为第1小题void Display();/ 本函数定义为第2小题operator unsigned int()return 100*yuan+10*jiao+fen; / 类型转换函数,可将RMB类型的对象转换成unsigned int类型数据friend ostream & operator (ostream & oo, RMB & r)oo r.yuan ”元” r.jiao ”角” r.fen ”分”;return oo;friend RMB operator +(RMB&r1, RMB&r2)unsigned int n = (unsigned int)r1 + (unsigned int)r2;RMB result(n);return result;friend RMB & operator +(RMB & rmb)rmb.fen+;if(rmb.fen=10)rmb.jiao+;rmb.fen = 0;if(rmb.jiao=10)rmb.yuan+;rmb.jiao = 0;return rmb;friend RMB operator +(RMB & rmb, int)RMB temp = rmb;rmb.fen+;if(rmb.fen=10)rmb.jiao+;rmb.fen = 0; 第 4 页 ( 共 12 页 )if(rmb.jiao=10)rmb.yuan+;rmb.jiao = 0;return temp;protected:unsigned int yuan, jiao, fen;void main()RMB rmb(12345);cout rmb endl;cout +(+rmb) endl;cout rmb+ endl;cout rmb endl;(1) 完成构造函数的定义。其中,形式参数是一个以人民币“分”为单位的整型量表示金额总数(如,“12345分”为“123元4角5分”),要求根据该形式参数正确地完成数据成员yuan(元),jiao(角),fen(分)的初始化。(2) 完成成员函数Display()的定义。(3) 前增量运算是否可以用作左值表达式? 说明为什么后增量运算不能作为左值表达式。(4) 写出程序的运行结果。第 5 页 ( 共12页 )得分三阅读程序(共15分)#include #include class Animalpublic:Animal(int w=0, int a=0)cout Constructing an Animal. endl;weight = w;age = a;virtualAnimal()cout Destructing an Animal. endl;void Print()cout ANIMAL ;/ 此处无换行virtual void Show()cout An Animal ( weight Kg, age years old). endl;protected:int weight, age;class Cat : public Animalpublic:Cat(char *pName=NoName, int w=0, int a=0):Animal(w,a)name = new charstrlen(pName)+1;strcpy(name, pName);coutConstructing a Cat, name created.endl;Cat()coutDestructing a Cat, name deleted.endl;delete name;void Print()cout CAT ;/ 此处无换行void Show()cout name , a cat ( weight Kg, age years old). Meow. Print(); pa-Show();pc-Print(); pc-Show();delete pa;delete pc; 1. (10分)写出运行结果。2. (5分)结合上面的程序,倘若不将析构函数设置成虚函数,是否有缺陷?若有,请指出其缺陷。答:第 7 页 ( 共 12 页 )四阅读及改编程序(共30分)1.(10分)有如下类CAT的说明class CATpublic:CAT(int age=0)itsAge = new int;*itsAge = age;CAT(CAT & c)itsAge = new int;*itsAge = *(c.itsAge);CAT()delete itsAge;itsAge = NULL;int GetAge()return *itsAge;void SetAge(int age)*itsAge = age;protected:int *itsAge;将其中的数据成员改成整型变量int itsAge;请重新编写这个类,要求保持类的外部接口不变(即成员函数的原型不变、功能不变,函数体语句需要修改。若系统提供的某种默认函数能有相同功效,可以不另外定义而使用系统默认的函数)。得分第 8 页 ( 共 12 页 )2.(20分)有如下类Tdate的说明及程序#include #include class Tdatepublic:Tdate(int m=12, int d=25, int y=2004);int IsLeapYear();void Print();void NextDay();friend ostream & operator (ostream & oo, Tdate & date);friend Tdate & operator +(Tdate & date);friend Tdate operator +(Tdate & date, int);private:int month, day, year;Tdate:Tdate(int m, int d, int y)month = m; day = d; year = y;int Tdate:IsLeapYear()return (year%4=0 & year%100!=0 | year%400=0);void Tdate:Print()cout setfill(0) setw(2) month / setw(2) day / year endl;cout daysmonth-1)day = 1;month+;if(month12)month = 1;year+;第 9 页 ( 共 12 页 )ostream & operator (ostream & oo, Tdate & date)oo setfill(0) setw(2) date.month / setw(2) date.day / date.year;oo setfill( );return oo;Tdate & operator +(Tdate & date)date.NextDay();return date;Tdate operator +(Tdate & date, int)Tdate temp(date);date.NextDay();return temp;template void fn(T a, int n)for(int i=0; in; i+)cout a+ endl;void main()Tdate a;fn(a, 10);(A) (4分)写出程序的运行结果。第 10 页 ( 共 12 页 )(B) (16分)将类Tdate中的数据成员改成int *year, *month, *day;请重新编写这个类,要求保持类的外部接口不变(成员函数的原型不变、功能不变,函数体语句需要修改)。即在类之后完成尚未完成的5个成员函数的定义以及3个运算符重载。class Tdatepublic:Tdate(int m=12, int d=25, int y=2004);Tdate(Tdate & date);Tdate();int IsLeapYear()return (*year%4=0 & *year%100!=0 | *year%400=0);void Print();void NextDay();friend ostream & operator (ostream & oo, Tdate & date);friend Tdate & operator +(Tdate & date);friend Tdate operator +(Tdate & date, int);private:int *month, *day, *year;第 11 页 ( 共 12 页 )第 12 页 ( 共 12 页 )五(共15分。其中,类3分,其余每小题2分)设计一个复数类class Complex,其数据成员为dou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论