程序设计实践 联系客服

发布时间 : 星期二 文章程序设计实践更新完毕开始阅读2beb0fc458f5f61fb7366601

Fract,完成两个分数相加的功能。

具体要求如下: (1)私有数据成员

? int num,den :num为分子,den为分母。

(2)公有成员函数

? Fract(int a=0,int b=1):构造函数,用a和b分别初始化分子num、分母

den。

? int ged(int m,int n):求m、n的最大公约数。此函数供成员add()函数调用。 ? Fract add(Fract f):将参数分数f与对象自身相加,返回约简后的分数对象。

? void show( ):按照num/den的形式在屏幕上显示分数。

(3)在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给对象f3,显

示分数对象f3。

24.建立一个类NUM,并统计特定序列中相同的数字的个数。 具体要求如下:

(1)私有数据成员

? int data[25]:随机生成25个在0-9之间的数字。 ? int num[10]:储存每个数字出现的个数。

(2)公有数据成员

? ?

NUM(int data):构造函数,初始化数组data。

void process( ):统计数组data中每个数字出现的个数,并保存到数组num中。

? void print( ):输出每个数字出现的个数,每行输出5个

(3)在主程序中定义一个对象,对该类进行测试。 25.建立一个类NUM,并统计特定序列中相同的字符的个数。

具体要求如下: (1)私有数据成员

? ? ? ? ?

char data[25]:随机生成25个字符。

int num[128]:储存每个字符出现的个数。

NUM(int data):构造函数,同时初始化数组data。

void process( ):统计数组data中每个字符出现的个数,并保存到数组num中。

void print( ):输出每个出现过的字符及其出现的个数,每行输出5个,没有出现过的字符不显示。

(3)在主程序中定义一个对象,对该类进行测试。

26.建立一个类NUM,随机生成25个字符序列,并为特定序列进行排序。

具体要求如下:

1

(2)公有数据成员

(1)私有数据成员

? int data[25]:随机生成25个字符。

(2)公有数据成员

? NUM(int data):构造函数,初始化数组data。

?

void process( ):为数组data进行排序,要求按照ASCII码进行升序排列。

? void print( ):输出数组data,每行输出5个字符。

(3)在主程序中定义一个对象,对该类进行测试。

27.建立一个类NUM,求指定数据范围内的所有素数(质数)。提示:素数定义是“只能被1和它本身整除的整数”,即质数。 具体要求如下: (1)私有数据成员

?

?

int data[10]:依次存放原始数据。

int prime[10]:存放指定数据内所求出的所有素数。

? int num:存放素数个数。

(2)公有数据成员

? ? ?

NUM(int n[ ]):构造函数,用参数n初始化data,同时初始化num为0。

int isprime (int x ):判断x是否为素数。若是素数,返回1,否则,返回0。

void process( ):求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num。

? void print( ):输出求出的素数个数及所有素数,每行输出4个素数。 (3)在主函数中完成对该类的测试。定义NUM类对象test,通过test调用成员

函数完成求素数及输出素数的工作。原始数据为{4, 5, 9, 11, 36, 29, 31, 101, 56, 199}。

28.编程实现对大于1的整数进行质因数分解,并求出其和。所谓整数的质因子分解

是指将整数分解为其所有质数(素数)因数的积,例如,60=2*2*3*5,则整数60的质因数之和为12。定义一个类Decompose实现上述功能。 具体要求如下: (1)私有数据成员

? ? ?

int *a:指向存放对应整数的质因数之和的动态存储空间。 int *num:指向待分解质因数整数的动态存储空间。 int n:整数的个数。

(2)公有数据成员

? Decompose(int m,int b[ ]): 用m初始化n,并用n初始化为动态申

请空间的指针a与num。用参数b给数组a赋值。 ? ?

void print( ):输出数组a以及num所指向的存储空间中的内容。 void primenum( ):求整数a[i]的所有质因数(保留重复部分,例如60的质因数为 2,2,3,5,之和为12),并将这些质因数之和存放到指针num

1

所指向的存储空间中。

? ~Decompose( ):释放动态分配的存储空间。

(3)在主函数中完成对该类的测试。从键盘输入一组大于1的整数,存放在number

数组中,定义类Decompose的对象d ,并用 number初始化d ,调用函数primenum( ) 求number 的所有质因数,最后输出测试结果。

29.建立一个类SUM,输入5×5的二维数组,编写程序实现:求出两对角线上各元素

的和,求出对角线上行、列下标均为偶数的各元素的积,找出对角线上其值最大

的元素以及它在数组中的位置。 具体要求如下: (1)私有数据成员

? int array[5][5]:二维整型数组。 ? int s:数组array两对角线元素的和。

? int a:数组array对角线上行、列下标均为偶数的各元素的积

? int b,m,n:数组array对角线上其值最大的元素以及它在数组中的位置。 (2)公有成员函数

? SUM(int d[5][5]):构造函数,初始化成员数据。

? void process1():求二维数组两对角线元素的和。

? void process2():求二维数组两对角线上行、列下标均为偶数的各元素的

积。 ? void process3():求二维数组两对角线上其值最大的元素和它在数组中的

位置。 ? void print():输出二维数组(每行输出5个元素)及其它所求的值。

(3)在主程序中对该类进行测试。 30.建立一个矩阵类Array,对二维数组中左下三角的全部元素(包括对角线上的元素)

作如下变换:(1)若该数不是素数则保持不变;(2)若该数是素数,则用大于它的

最小素数替换该数。并统计二维数组中左下三角的全部元素(包括对角线上的元素)中的素数个数。 具体要求如下: (1)私有数据成员

? ? ? ? ?

int x[4][4]:存储需要处理的二维数组的各元素值。 int count:存储左下三角元素中素数的个数。 构造函数:进行初始化x数组和count的值。 int fun(int);判断一个数是否为素数的函数。

int encode( ):对x数组中左下三角的全部元素(包括对角线上的元素)逐一进行判断,若该数不是素数则保持不变,若该数是素数,则用大于它的最小素数替换该数。

? void print():按行输出矩阵的值。

(3)编写一个程序测试该类,说明(声明)Array对象A,将一个矩阵存入对象

A中,并输出矩阵的值,使用以下测试数据:

1

(2)公有成员函数

3 6 4 17 5 6 4 17 8 5 9 10 变换后的矩阵为 8 7 9 10 12 19 7 20 12 23 11 20

4 14 21 23 4 14 21 29

31.建立一个类SUM,实现m行k列矩阵与k行n列矩阵的乘积。设A为m行k列的矩阵,B为k行n列的矩阵,则C=A×B。 具体要求如下: const int m=3; const int k=4; const int n=3;

(1)私有数据成员

? int A[m][k]:存放m行k列矩阵。 ? int B[k][n]:存放k行n列矩阵 ? int (*C)[n]:指向乘积矩阵 (2)公有成员函数

? 构造函数:初始化成员数据。 ? 析构函数:收回行指针。

? void process():求矩阵的乘积。

? void print():输出各二维数组(按行列形式)。 (3)在主程序中对该类进行测试。

32.建立一个类SUM,使用二维数组输入“Follow me”,“BASIC”,“Great wall”,“Fortran”,“Pascal”,将它们按从小到大的顺序排列后输出。

具体要求如下:

(1)私有数据成员

? int *p[5]:存放二维数组每行的字符串的地址。 (2)公有成员函数

? SUM(int d[5][5]):构造函数,初始化成员数据。

? void process1():对二维数组中存放的字符串进行排序。 ? void print():输出二维数组中排好序的字符串。 (3)在主程序中对该类进行测试。

33.建立一个类Integer_String,把一个正整数转换为字符串。

具体要求如下: (1)私有数据成员

? ? ? ? ?

int num:要转换的正整数。

char *s:用动态空间存储转换得到的字符串。 Integer_String(int n):用参数n初始化数据成员num。 int f():求数据成员num的位数。

void fun():把正整数num转换为字符串s。

1

(2)公有成员函数