面向对象程序设计课程设计指导_第1页
面向对象程序设计课程设计指导_第2页
面向对象程序设计课程设计指导_第3页
面向对象程序设计课程设计指导_第4页
面向对象程序设计课程设计指导_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计课程设计指导书(2周)适用专业:苏州理工学院计算机科学与技术专业 江苏科技大学 苏州理工学院2013 年 8 月一、 课程设计目的面向对象程序设计课程设计的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言(C+)基本语法、基本算法的理解,加深对面向对象程序设计的理解,并将课本上的理论知识的实际应用有机的结合起来,锻炼学生的分析问题、解决问题的能力,为学习后续课程和实际编程打下良好的基础。二、 课程设计要求利用所学的面向对象程序设计的编程知识和技巧,独立完成具有一定难度的程序设计题,养成良好的编程习惯,掌握基本程序设计的理念、方法,熟练运用程序调试的技巧,提高基

2、本的程序开发能力。1. 学生必须独立完成本指导书中附录一中的所有编程题。2. 遵守机房管理制度和实验操作规则3. 上机者在上机规定的时间内,不得从事与本课程设计无关的内容4. 独立完成课题,严禁抄袭他人成果5. 按时提交报告三、 时间安排2013年9月2日2013年9月13日。四、 实验设备和开发工具1 计算机计算机应具有较好的性能和稳定性。2 操作系统操作系统采用Windows 2000、Windows XP、Windows 2003 server等。3 开发工具VC五、 考核要求1 上机考核:在规定的时间内完成12题进行编程,占总成绩的60%。2 课程设计报告:选附录中的一半题写成报告,格

3、式要求见附录二,占总成绩的20%。3 平时表现:占总成绩的20。附录一:课程设计内容【排序、数组操作】1. 题目 对一个5位数的任意整数,求出其降序数。例如:整数是82319,则其降序数是98321。算法提示:将整数的各位数分解到一维整型数组a中,再将a数组中的元素按降序排序,最后输出a数组元素值。试建立一个类NUM,用于完成该功能。具体要求如下: (1) 私有数据成员l int n ; 存放5位数的整数。l int a5 ; 存放其元素的降序排列值。 (2) 公有成员函数l NUM ( int x=0) :构造函数,用参数x初始化数据成员n。l void decrease( ) :将n的各位

4、数值分解到a数组中,并将a数组排成降序。l void show ( ) :屏幕显示原数及其降序数。 (3) 在主程序中输入一个5位数的任意整数,然后定义一个NUM类对象num,用上述输入的数初始化num,然后完成对该类的测试。运行结果:输入一个五位的正整数:82319n=823199 8 3 2 12. 题目 设有一个包含size个数的数列,要求能够把从指定位置m开始的n个数排成降序,并输出新的完整的数列。可将数列存放在一维数组中。例如,原数列有10个数,值为 1,8,3,0,5,9,7,6,9,8 ,若要求把从第4个数开始的5个数排成降序,则得到的新数列为 1,8,3,9,7,6,5,0,9

5、,8 。试建立一个类LIST,完成上述功能。具体要求如下: (1) 私有数据成员l int size ; 数列元素个数。l int *arr ; 数列数组的起始指针。 (2) 公有成员函数l LIST(int a , int len) :构造函数,用len初始化size,根据size动态分配数组存储空间,arr指向该存储空间。l void sortpart (int m, int n) :将数列从第m个元素开始的n个数排成降序。注意:数列中数的序号与其元素的下标不一致。l void output( ):输出新的完整的数列。l LIST ( ) :析构函数,释放arr指向的存储空间。 (3) 在

6、主程序中定义数组int a10用于存放原始数列,其值为 1,8,3,0,5,9,7,6,9,8 。定义一个LIST类对象tt,用a数组及数组实际元素的个数初始化该对象,然后把从第4个数开始的5个数按逆序排列,完成该类的测试。3. 【题目】求整数x,使y=x2的各位数字为严格递增序列。如:372=1369中,1、3、6、9是严格递增序列;又如,1、3、6、6、9就不是一个严格递增序列。试建立一个类RISE,完成求出某范围内,满足条件的所有x及其平方数和x的个数。 具体要求如下: (1) 私有数据成员l int low, high :x的取值范围的下限和上限。l int a1002 :每行存放满足

7、条件的x及其平方数。l int count :满足条件的x的个数。 (2) 公有成员函数l RISE (int lw, int hi) :构造函数,用参数lw和hi分别初始化low和high。缺省的取值范围为10,1000。将count初始化为0。l int isrise(int y) :判断y的各位数字是否严格递增,若是则返回1,否则返回0。l void process( ) :求出满足条件的所有x及其平方,并将结果存入数组a,同时统计满足条件的x的个数。l void show( ) :输出数组a及count。 (3) 在主函数中完成对该类的测试。定义一个RISE类的对象v,使用缺省方式初始

8、化该对象,按上述要求处理并输出结果。 程序运行结果应为:13 16916 25617 28937 1369116 13456117 13689367 134689count=74. 【题目】若数组a中的n个元素已按升序排列,现将一个新数x插入到数组a中,插入后数组a的元素仍然保持升序。使用的插入排序算法是:从数组a的最后一个元素开始,依次向前扫描数组元素,若ai大于x,则将ai 放入ai+1(后移一个位置),并继续向前扫描,直到找到某个ai小于或等于x,将x赋值到ai+1元素中,此时完成插入排序工作。编写程序时要考虑初始时,数组是空数组(即数组中没有元素),插入第一个元素时,要做特殊处理。试建

9、立一个类InsSort,完成插入排序工作。 具体要求如下: (1) 私有数据成员l int a100 :存放排好序的整数序列。l int n :数组实际元素个数。 (2) 公有成员函数l InsSort (int b , int size) :构造函数,用参数b初始化a数组,用参数size初始化n,size的缺省值是0。l void insert(int x) :将x插入到数组a中。l void show( ) :输出数组元素个数及数组各元素值。 (3) 在主函数中完成对该类的测试。定义数组int b100,其初值是: 1,3,5 。定义一个InsSort类的对象arr,用数组b及其元素的个数

10、初始化该对象。定义数组int c100,其初值是: 0,1,2,3,5,8,10 。然后循环将数组c中的所有元素依次插入到对象arr的成员数组a中。最后输出对象arr中的全体数据成员。程序正确运行后,应输出:number=100, 1, 1, 2, 3, 3, 5, 5, 8, 105. 【题目】将两个分别从小到大排列的有序数组a和b复制合并到第3个有序数组c中。m和n分别是数组a和b的元素个数,结果c的元素个数为k。例如a和b数组元素分别为1,2,2,3,8和3,4,7,8,则结果数组c的值是:1,2,2,3,3,4,7,8,8。算法是:将a、b两个数组看成两个队列,比较队首的两个元素,将较

11、小者放入c队列尾部,如果队首的两个元素相等,则先选择a队列首部元素加入c队列尾部。循环执行以上过程,直到a或b队列之一为空,然后将另一个非空队列拷贝到c队列尾部。注意:不允许使用其它算法(如排序算法)。试建立一个类Com,完成合并工作。 具体要求如下: (1) 私有数据成员l int m, n, k :分别是a,b,c三个数组的元素个数。l int a100, b100, c100 :存放a,b,c三个数组的值。 (2) 公有成员函数l Com(int aa , int m1, int bb , int n1) :构造函数,用参数初始化a, b数组及其元素个数。 将k初始化为0。l void

12、combine( ) :完成合并工作。l void show( ) :将a,b,c三个数组输出,每行输出一个数组。 (3) 在主函数中完成对该类的测试。定义两个数组int x100, y100,其初值如上。定义一个Com类的对象c,用x、y数组及其元素的个数初始化该对象,然后调用成员函数进行合并及输出工作。程序正确的运行结果如下:a: 1, 2, 2, 3, 8b: 3, 4, 7, 8c: 1, 2, 2, 3, 3, 4, 7, 8, 86. 题目建立一个array类。要求如下:(1)私有数据成员int n:存储数组元素个数。int a100:存放数组元素。(2)公有成员函数构造函数arr

13、ay(int m,int b):初始化数据成员n,a。void delsame():完成将数组a中相同元素删除工作。void print():将数组以每行5个元素的形式输出到屏幕。(3)编写一个程序测试该类。在主函数中定义一个数组int b16,其初值是1,2,1,5,3,4,6,3,4,2,7,6,9,8,6,10。定义一个array类的对象,用b及数组元素个数初始化该对象,则经删除后a数组的内容为1,2,5,3,4,6,7,9,8,10。7. 【题目】设是集合A上的二元运算,如果对于集合A中的任意元素a和b,都有ab=c,且cA,则称二元运算对于集合A是封闭的。现有一数组a,假定其数组元素

14、构成集合A。试建立一个类DATA,判断求余运算“%”对集合A是否封闭。即判断数组中的任意两个元素ai和aj,当aj不等于0时,ai除以aj所得余数仍然属于集合A。具体要求如下:(1)私有数据成员l int *a ; 整数指针,指向动态分配的数组空间l int n ; 数组中元素个数 (2)公有成员函数l DATA(int t , int n1) ; 构造函数,用n1初始化n,并根据n动态生成数组a,用t数组对a数组初始化。l int belong(int a , int n, int x) ; 判断x的值是否在数组a中,如果在返回1,否则返回0。l void fun( ) ; 判断求余运算%对

15、本对象是否封闭,如果封闭,输出“封闭”。如果不封闭,则输出“不封闭”,同时输出第一个不满足条件的ai和aj。l void print( ) ; 输出成员数据的值。l DATA( ) ; 析构函数,完成必要的功能。(3)在主函数中对该类进行测试。先定义两个整型数组d1和d2,分别具有9个元素和8个元素,两个数组的值分别是1, 3, 22, 4, 15, 2, 7, 5, 0和1, 3, 8, 4, 6, 7, 5, 0。然后用这两个数组初始化两个DATA类的对象test1和test2,测试并输出结果。正确的运行结果如下:集合: 1 3 22 4 15 2 7 5 0封闭集合: 1 3 8 4 6

16、 7 5 0不封闭:8 38. 【题目】编写程序对用户数据进行简单的管理,要求按姓名的字典顺序对用户信息进行排序。试定义表示用户信息的类person和用户信息处理的类compute实现上述功能。具体要求如下:定义类person,其成员如下:(1) 私有成员l char name10,num10:分别表示用户的姓名和电话号码。定义类compute,将类compute声明为类person的友元类,其成员如下:(1) 私有成员l person pn3:表示3个用户。(2) 公有成员函数l void setdata():通过键盘输入3个用户的数据。l void sort():将数组pn表示的用户信息按

17、姓名的字典顺序进行排序。l void print():按照指定格式输出用户信息。在主函数中定义一个compute对象,再通过键盘输入每个用户的基本信息,调用相关成员函数完成对类compute和person的测试。输入/输出示例(下划线部分为键盘输入):输入姓名和电话号码:Jeorge 2121212Mike 34545454Adam 34676767排序后用户信息为:姓名 电话号码Adam 34676767Jeorge 32121212Mike 345454549. 【题目】编程将一个二维数组元素变换为逆向存放。即按元素在内存中的物理排列位置,最前面的元素变成最后面的元素,前面第二个元素变成最

18、后倒数第二个元素,依此类推。如:原始二维数组为:,逆向存放后变为:。算法提示:对二维数组进行变换处理时,可以将二维数组当作一维数组来处理。试建立一个类REVARR,完成上述工作。 具体要求如下: (1) 私有数据成员l int aMN :初始化时,存放原始二维数组。最终,存放逆向存放后的二维数组。 (2) 公有成员函数l REVARR(int xMN) :构造函数,用形参x初始化数据成员a。l void reverse( ) :按题目要求处理二维数组。l void show( ) :按二维方式输出a数组值。 (3) 在主函数中完成对该类的测试。 在程序的开头,定义符号常数M和N的值分别为3和4

19、,表示数组的行数和列数。在主函数中定义数组int dataMN,其初值如上。定义一个REVARR类的对象arr,并用数组data初始化该对象的成员a,输出原数组值;然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。10. 【题目】试定义一个类Array,实现由一个二维数组派生出另一个新二维数组的操作。新数组的行数和列数分别为原数组的列数和行数,且其元素值为原数组中与该元素同序的元素所在行和列的所有元素的平均值。所谓同序元素,是指两个数组中存储顺序相同的两个元素。例如,假设定义两个数组a45,b54; 数组元素b12为数组b的第6个元素,则b12在数组a中的同序元素为a的第6个元素,即

20、a10。因此,b12的值为a的第一行第0列所有元素的平均值,即(a00+ a10+ a20+ a30+ a11 + a12 + a13 + a14)/8(其中a10不重复使用,见输入/输出示例)。具体要求如下:(1) 私有成员l float a45, b54; 原数组a和派生数组b。(2) 公有成员l Array(int t45):构造函数,用数组t初始化数组a,并将数组b的各元素值置为0。l void fun():按题目中的要求计算数组b的各个元素值。l void print():按矩阵形式输出数组a和数组b。 (3) 在主函数中定义一个4行5列的二维数组,再利用它初始化一个Array对象,

21、调用相关成员函数完成对类Array的测试。输入/输出示例(不包括椭圆部分):数组a:1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20数组b:6 6.375 6.75 7.1257.5 8.5 8.875 9.259.625 10 11 11.37511.75 12.125 12.5 13.513.875 14.25 14.625 1511. 【题目】试定义一个学生成绩类Score,实现对学生成绩操作。具体要求如下:(1) 私有成员l No、Name、Math、Phi、Data、ave; 分别表示学号、姓名、数学、物理、数据结构、平均分,数据类型根据

22、数据的性质自定。(2) 公有成员l Average():计算学生平均分。l Write():输入学生信息。l Display():显示学生信息。 (3) 在主函数中用Score类定义学生成绩对象数组s3。用Write()输入学生成绩,用Average()计算每个学生的平均分,最后用Display()显示每个学生的成绩。实验数据:No Name Math Phi Data Ave1001Zhou 80 70 601002Chen90 80 851003Wang70 75 89【字符串操作】12. 题目定义字符串(string)类,完成对字符串的操作。具体要求如下: (1) 私有数据成员l cha

23、r str80; 存放字符串l int c ; 字符串中字符的个数。 (2) 公有成员函数l 构造函数WORD (char *s) : 初始化成员字符串数据str。l void catstr(string st ):实现将str与st的str内容连接。l void cpystr(string st ):实现将st的str内容复制到str中。l void chgstr(string st ):实现将str的内容与st的str内容交换。l void print ( ) :屏幕输出字符串。 (3) 在主程序中实现以下功能: 1、设计菜单实现功能选择; 2、字符串的输入与赋值; 3、字符串的运算,包括

24、: 1)连接 2)复制 3)交换 4、字符串的输出13. 题目 建立一个类WORD,统计一个英文字符串中的英文单词个数。字符串中的各英文单词以一个空格符分隔。如字符串“I am a student中的英文单词个数为4。具体要求如下: (1) 私有数据成员l char str80l int c ; 存放字符串str中的英文单词的个数。 (2) 公有成员函数l 构造函数WORD (char *s) : 初始化成员字符串数据str。l void process( ):统计字符串中的英文单词的个数。l void print ( ) :屏幕输出字符串及其英文单词数。 (3) 在主程序中对该类进行测试。

25、使用测试字符串I think it is going to be a nice day tomorrow运行结果:I think it is going to be a nice day tomorrowNumber : 1114. 【题目】将字符串中指定的英语单词(字母子串)进行单数变复数的处理,单词之间用非字母分隔。为了简化编程,将单词的单数变复数的规则是:直接在单词后加s。例如单词student的复数为students。例如,有下列字符串: We are student, you are student, too. 指定单词student,将字符串中所有的student修改为studen

26、ts。处理后的字符串为: We are students, you are students, too.试建立一个类Modistr,完成以上工作。具体要求如下: (1) 私有数据成员 l char *str ; 存放指定的字符串; (2) 公有成员函数 l Modistr (char *s) ; 构造函数,动态申请字符串空间,用s所指向的串初始化str;l void print( ) ; 输出字符串str;l void modify(char *wordp) ; 将wordp所指向的单词转换为复数。l Modistr ( ) ; 析构函数 (3) 在主函数中完成对该类的测试。定义类Modist

27、r的对象mys,用字符串“We are student, you are student, too.”初始化mys,调用函数modify(char *)完成将单词student单数变复数的处理。输出变换前和变换后的字符串。15. 题目 建立一个类STRING,将一个字符串交叉插入到另一字符串中(假定两字符串等长)。如将字符串“abcde”交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE” 或“AaBbCcDdEe”具体要求如下: (1) 私有数据成员l char str180; 被插入的字符串。l char str240; 字符串str2将被插入到字符串str1中。 (2) 公有成员

28、函数l 构造函数STRING (char *s1, char *s2) :初始化成员数据。l void process( ):将字符串str2插入到字符串str1中。l void print ( ) :屏幕输出被插入后的字符串str1。 (3) 在主程序中对该类进行测试。使用测试字符串“0123456789”和“abcdefghij”。运行结果:str1=a0b1c2d3e4f5g6h7i8j9str2=abcdefghij16. 【题目】任意输入一个字符串,串中连续出现的相同元素构成的子序列称为平台,试建立一个类Str,完成求出串中最长平台的长度。例如:若字符串为jkkkaabbbbaaa,

29、则最长平台为bbbb,其长度为4。 具体要求如下: (1) 私有数据成员l char *str :指向动态申请的字符串空间。l int maxlen :str所指向的字符串中最长平台的长度。 (2) 公有成员函数l Str(char *p) :构造函数,动态申请成员str指向的内存空间,用p指向的字符串初始化成员str指向的字符串;置maxlen初始值为0。p缺省为空指针(缺省值为0)。l Str( ) :释放str所指向的动态内存空间。l void process ( ) :求str所指向的字符串中最长平台的长度。l void show( ) :输出字符串及最长平台的长度。 (3) 在主函数

30、中完成对该类的测试。输入一个字符串到字符数组text中,定义一个Str类的对象s,用text初始化对象s,调用成员函数求str所指向字符串中最长平台的长度,输出字符串及其最长平台的长度。可用题例数据作为测试数据。17. 题目将一个字符串中的所有与指定字符串相同的子串用另一个字符串替换(查找与替换)。要求:(1)函数int find(char *s1,char *s2)的功能是判断字符串s1(子串)是否在字符串s2(主串)中出现,若出现,返回出现的起始位置,若未出现,则返回-1。 (2)函数void replace(char *s1,char *s2,int n1,int n2)的功能是将字符串

31、s1中第n1个字符起的n2个字符用字符串s2替换。(3)在主函数中实现查找与替换工作,并给出替换的次数。例如:主串为 “This book is a very good book.”,如果待替换的子串为“book”且要替换成 “cat”时,替换后的字符串为“This cat is a very good cat.”,替换次数为2;如果待替换的子串为“bok”时,因“bok”未在主串中出现,所以,主串不变,替换次数为0。18. 【题目】试定义一个类Parity,实现字符串的奇偶校验。假设a是由0和1组成的字符串,为了检测传输过程中可能出现的错误,可以在a中加入奇偶校验码,其方法是把字符串a从左到

32、右按每7个字符一组分成若干组。例如,假设a是由18个字符组成的字符串:001100100010010100经过分组之后,将a分成以下3(18/7+1)组:0011001 0001001 0100在每一组字符的后面加入一个奇偶校验码,即如果某一组中字符1的个数为奇数,则加入1,反之则加入0,上述字符串a加入奇偶校验码后变为:00110011 00010010 01001其中下划线部分为新加入的奇偶校验码。具体要求如下:(1) 私有成员l char *a, *b:分别存储原始的字符串以及增加校验码后的字符串。l int n:存储原始字符串的长度。(2) 公有成员l Parity(char *aa,

33、 int nn):构造函数,用aa和nn分别初始化数据成员a和n,并为指针b动态分配n+n/7+2个字节数的内存空间。l void fun():为字符串a增加校验码,并将结果存入字符串b中。l void print():输出字符串a和b。l Parity():释放动态分配的内存空间。(3) 在主函数中定义一个由0和1组成的字符串,并用其初始化Parity对象,调用相关成员函数完成对类Parity的测试。输入/输出示例(输出不含下划线): 原字符串为:001100100010010100加入校验码后的字符串为:00110011000100100100119. 题目 建立一个类STR,连接两个字符

34、串后,将结果字符串中的字符排成升序。例如,字符串s1的值为“pear”,字符串s2的值为“apple”,将s1与s2连接后得到字符串“pearapple”,存入字符数组s3,排序后得“aaeelpppr”。具体要求如下: (1) 私有数据成员l char s140, s240 ; 存放两个原始字符串。l char s380 ;存放结果字符串。 (2) 公有成员函数l STR(char a , char b ) :构造函数,用字符串参数a和b初始化数据成员字符串s1和s2。l void consort( ) :合并字符串后,再对其中的字符排序。l void show ( ) :输出两个原始字符串

35、和结果字符串。 (3) 在主程序中定义两个字符数组char a80,b80,任意输入两个字符串,再定义一个STR类对象str,用字符串a和b初始化该对象,然后按上述要求测试该类。可自行输入任意两个字符串做测试数据。【整数与字符串相互转换】20. 题目定义一个字符串类STR,实现依次提取指定字符串中所有连续数字组成的数值。具体要求如下:(1)私有数据成员char *st ; 采用动态存储方式存放字符串。int a20,n; a的元素是st中相邻数字组成的数值,n为a数组的元素个数。(2)公有成员函数STR(char *s) : 构造函数,初始化私有数据成员。void fun(): 功能函数,完成

36、数值提取工作。void print ( ) : 功能函数,输出字符串st及提取出的数据。STR() ; 析构函数,释放动态内存。(3)编写一个程序测试该类。测试字符串为” 103 anbb18cfg7d3456hiy78j”。运行结果: str=103 anbb18cfg7d3456hiy78j a5=103,18,7,3456,78【进制转换】21. 题目建立一个类Plus,实现两个不同进制的正整数相加,参与计算的两个正整数均用字符串表示,若字符串第一个字符为“0”,但第二个字符不为“x”或“X”,则表示八进制数;若前两个字符为“0x”或“0X”,则表示十六进制数,其他情况为十进制数。计算结

37、果用十进制整数表示。具体要求如下:(1)私有数据成员char *p1,*p2; p1,p2指向以字符串形式表示的参与加法运算的两个正整数。int s; 存储两个正整数相加的结果。(2) 公有成员函数Plus (char *st1, char *st2) :构造函数,初始化数据成员p1和p2。int dec(char *t,int n ):将字符串t表示的n进制数转换为十进制整数,并将结果返回。int num(char *t):确定字符串t表示的进制后,调用函数dec()将该字符串转换为十进制整数,并将结果返回。void pocess():利用函数num()实现数据成员指向的两个整数的加法运算,

38、结果存入数据成员s中。void print ( ) :按一定格式输出计算结果。Plus ( ) :析构函数,释放动态分配的存储空间。(3)在主程序中输入两个字符串(八进制、十进制或十六进制形式),利用其初始化一个Plus对象。调用相关成员函数完成对类Plus的测试。输入/输出示例(下划线部分为键盘输入):输入两个整数:034 0xA3c计算结果为:034+0xA3c=28+2620=2648【运算符重载】22. 题目建一个类Set,重载运算符*,实现集合(用数组表示)的交()运算。集合中的元素不能相同。两个集合的交仅包含两个集合中共同存在的。如:集合s1=1,2,3,4,5,6),s2=3,5

39、,7,9,11),则:s1s2=3,5。具体要求如下:(1)私有数据成员double elems20; 存放集合中的元素。int lens; 集合中的元素个数,且lens=20;空集时值为0。(2)公有成员函数Set(double a,int n) ; 定义构造函数,给私有数据成员初始化。int Inset (double e); 判断e是否在集合elems中,若在,返回1;否则返回0。Set operator * (Set); 重载运算符*Set operator = (Set &); 重载运算符=void print(); /输出向量的各元素值(3)在主程序中定义一个类Set的对象a,b,

40、c。调用相应函数进行测试。23. 题目定义一个描述矩阵的类Array,重载“+”运算符完成二个矩阵的加法。具体要求如下:(1)私有数据成员double elems33; 存放33实数矩阵。(2)公有成员函数Array (double a33) ; 定义构造函数,给私有数据成员初始化。Array operator + (Array); 重载运算符+,实现矩阵的加法运算。Array operator = (Array &); 重载运算符=,实现矩阵的赋值。void print(); 输出33实数矩阵。(3)在主函数中定义矩阵对象a1、a2、a3(测试数据自定),进行矩阵加法a3=a1+a2运算,并

41、输出矩阵a1、a2、a3的全部元素值。24. 题目设计一个日期型数据类型Date,实现日期的相关运算。具体要求如下:(1)私有数据成员char day11; 存放日期,格式为:yyyy-mm-dd。(2)公有成员函数Date (char *) ; 定义构造函数,给私有数据成员初始化。int week(); 计算出该日是星期几。Date operator + (int); 重载运算符+,实现一个日期与天数相加。int operator - (Date); 重载运算符-,两个日期对象相减,返回相隔的天数。Date operator = (Date &); 重载运算符=,实现日期赋值。int ope

42、rator = (Date); 重载运算符=,判断两日期对象是否相等,相等返回1,否则返回0。void print(); 输出日期。(3)在主函数中定义日期对象d1、d2、d3,完成对Date类的测试。提示:星期的计算公式为W=(C/4)-2*C+y+(y/4)+(13*(month+1)/5)+day-1)+700)%7,其中:C为年份的前两位数;y即为年份的后两位数;month为输入日期的月份,day为输入日期的天数。W为0时,是星期天,为1时是星期一.为6是则为星期六。25. 题目设计多项式类Polynomial,实现两多项式相加。具体要求如下:(1)私有数据成员double a102;

43、 存放多项式,包含一个系数和一个指数。例如:2X4的系数为2,指数为4。int n; 存放多项式的项数(2)公有成员函数Polynomial (double b2,int x) ; 定义构造函数,给私有数据成员初始化。Polynomial operator + (Polynomial); 重载运算符+,实现两个多项式相加。Polynomial operator += (Polynomial &); 重载运算符+=,实现两个多项式相加赋值。Polynomial operator = (Polynomial &); 重载运算符=,实现多项式赋值。void print(); 输出多项式。(3)在主函

44、数中完成对Polynomial类的测试。【数的因子计算】26. 【题目】试定义一个类Test,对给定的正整数n,找出所有分母为n,且大小介于1/4和1/3之间的最简分数(即分子和分母除1外无公因子)。具体要求如下:(1) 私有成员l int n:存放指定满足条件的最简分数的分母。l int data20:存放所有满足条件的分子。l int num:存放满足条件的最简分数的个数。(2) 公有成员l Test(int x):构造函数,利用x初始化n,将 num置为0。l int judge(int k):判断分子k与分母n能否构成最简分数,若是最简分数返回1,否则返回0。l void proces

45、s():求满足条件的分子,并依次存入数组data。将分数个数存入num。l void print():输出满足条件的分数。(3) 在主函数中定义Test类的对象t,调用相关成员函数完成对类Test的测试。输入/输出示例(假设n的值为100):分母为100,且介于1/4和1/3之间的最简分数为:27/10029/10031/10033/10027. 题目 分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母

46、的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为:将m、n较小的一个数赋给变量k,然后分别用k,k-1,k-2,1 中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。具体要求如下: (1) 私有数据成员l int num,den ; num为分子,den为分母。 (2) 公有成员函数l Fract (int a=0, int b=1) :构造函数,用a和b初始化分子num、分母den。l int gcd(int m, int n):求m、n的最大公约数。此函数供add( )成员函数调用。l Fract add(Fract f ) :将参数分数f与对象自身相加,返回约简后的分数对象。l void show( ):按照num/den的形式在屏幕上显示分数。 (3) 在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给分数对象f3,显示分数对象f3。28. 建立一个类NUM,求指定范围内的所有素数

温馨提示

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

评论

0/150

提交评论