程序设计实践 联系客服

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

(2)公有成员函数

? MOVE(int b[],int m):构造函数,初始化成员数据。 ? void change():进行循环换位。 ? void print():输出一维数组。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。 14.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。 具体要求如下:

(1)私有数据成员

? char *array:一维字符数组。

? int n:数组中元素的个数。 (2)公有成员函数

? MOVE(char b[],int m):构造函数,初始化成员数据。 ? void change():进行排序换位。 ? void print():输出一维数组。

? ~MOVE():析构函数。

(3)在主程序中用数据\对该类进行测试。

15.定义一个一维数组类Carray,并根据给定算法实现对原始一维数组进行线性变换。这里给定的线性变换算法为:T(bx) = bT(x) + i; 其中,b为变换常量,x为变量,i为当前类中成员数组的下标值。根据该算法,原始数组在变化后,当前数组元素的值是由常量b和i下标来决定的。 具体要求如下: (1)私有数据成员

? ?

int *a:指针a指向一个动态分配的原始数组。 int n:n表示该数组的大小。

? int b:线性变换的常量。

(2)公有成员函数

? ? ? ?

Carray (int a[ ],int n,int x) :用给定的参数a、n和x初始化数据成员a、n和b。缺省都设置为0。

void Transform () :根据上述变化算法,求解数组变换。 void Show( ) :在屏幕上显示数组元素。 ~ Carray () :释放动态分配的空间。

(3)在主程序中定义数组int arr[ ]={1,2,3,4,5,6,7,8,9,10}作为原始数组,int b;由键

盘输入,作为线性变换的常量。定义一个Carray类对象test,用arr初始化test,完成对该类的测试。

16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为: F=W*f

T

f为原始矩阵,f为原始矩阵的转置,w为变换矩阵,这里设定为

1 0 0 1

0 1 1 0

1

T

0 1 1 0 1 0 0 1

具体要求如下:

(1)私有数据成员

? ?

int (*a)[4]:a指向方阵数组。 int w[4][4]:w为变换矩阵。

? int m:m表示方阵的行和列数。

(2)公有成员函数

? CMatrix (int a[][4],int m) :用给定的参数a和m 初始化数据成员a和m;

对变换矩阵w进行初始化,要求必须用循环实现。 ? ? ?

void Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内。

void show( ) :在屏幕上显示数组元素。 ~ CMatrix () :释放动态分配的空间。

(3)在主程序中定义数组int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原

始数组。定义一个CMatrix类对象test,用arr初始化test,完成对该类的测试。 17.定义一个类SIN,求sin(x)?x/1?x3/3!?x5/5!?x7/7!?....?(?1)n?1x(2n?1)/(2n?1 具体要求如下:

(1)私有成员数据。

? int x:输入公式中x的值,求sin(x)。

?

int n:输入公式中n的值。

(2)公有成员函数。

? SIN(int x, int n ):构造函数,用于初始化x和n的值。

? ? ? ?

int power( int q):求q!的值。 int mi( int m,int n):求m的值。 int fun( ):用于求SIN(X)的值。 void show( ):输出求得的结果。

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

18.试建立一个类VAR,用于求n(n?100)个数的均方差。均方差的计算公式为

n?1n?1d??i?0(xi?x)n2?x,其中平均值为x?i?0in。

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

? ?

double a[100]:用于存放输入的n个数。 int n:实际输入数的个数n。

(2)公有成员函数。

1

? ? ? ?

VAR(double x[], int n1):构造函数,初始化成员数据a和个数n。 double average(double x[], int n):求平均值,数组x具有n个元素。 void variance(double x[],int n):求均方差,数组x具有n个元素。 void show():输出求得的均方差。

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

19.定义一个方阵类Array,实现对方阵进行顺时针90度旋转。如图所示。

1 5 9

2 6 3 4 7 8 13 9 5 14 10 6 15 11 7 16 12 8

1 2 3 4

10 11 12

13 14 15 16

具体要求如下:

(1)私有数据成员

? int a[4][4]:用于存放方阵。 (2)公有成员函数

? ?

Array (int a1[][4],int n) :构造函数,用给定的参数a1初始化数据成员a。 void xuanzhuan ( ) :实现对方阵a进行顺时针90度的旋转。

? void show( ) :在屏幕上显示数组元素。

(3) 在主程序中定义数组int b[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原

始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。

20.定义一个方阵类Array,实现对方阵进行逆时针90度旋转。如图所示。 1 2 3 4 4 8 12 16 5 6 7 8 3 7 11 15 9 10 11 12 2 6 10 14 13 14 15 16 1 5 9 13

具体要求如下:

(1)私有数据成员

?

int a[4][4]:用于存放方阵。

(2)公有成员函数

? Array (int a1[][4],int n) :构造函数,用给定的参数a1初始化数据成员a。

? ?

void xuanzhuan ( ) :实现对方阵a进行逆时针90度的旋转。 void show( ) :在屏幕上显示数组元素。

(3) 在主程序中定义数组int b[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。

21.建立一个类NUM,求指定数据范围内的所有合数(非质数)。提示:合数定义是“一

个数,除了1和它本身,还有其它约数,这样的数叫合数”。

1

具体要求如下:

(1)私有数据成员

? int *data:动态存放在指定范围内求出的所有合数。 ? int span1,span2:存放指定范围的下限和上限。 ? int num:存放span1与span2之间的合数个数。 (2)公有成员函数 ? ? ? ? ?

NUM(int n1, int n2) :构造函数,用参数n1和n2初始化span1和span2,同时初始化num。

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

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

void print( ):输出求出的素数个数及所有合数,每行输出8个合数。 ~NUM( ):释放动态分配的存储空间。

(3) 在主函数中完成对该类的测试。定义一个NUM类对象test,指定查找范围

为100~200,即求100至200之间的所有合数。通过test调用成员函数完成

求合数及输出合数的工作。

22.建立一个类Saddle_point,求一个数组中的所有鞍点。提示:鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。

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

int a[4][4]:存放二维数组元素。 int b[4][4]:存放二维数组中的鞍点值。 int num:存放鞍点个数。

(2)公有成员函数

? Saddle_point(int data[][4]):构造函数,用参数int data[][4]初始化数组a,,

同时初始化数组b与num 的值均为0。 ?

void process( ):求数组a所有鞍点(如果有鞍点),把它们行、列、及值相应存放在数组b中,并将求出的鞍点个数赋给num。

? void print( ):输出数组a、鞍点个数,与鞍点坐标及相应值。

(3)在主程序中定义数组int b[ ][4]={2, 6, 3, 4, 5, 6, 5, 5, 5, 7, 6, 7, 1, 9, 2, 7}作为

原始数组。定义一个Saddle_point类对象fun。通过fun调用成员函数完成求

鞍点及输出工作。

23.分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个

分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为:将m、n较小的一个数赋给变量k,然后分别用{ k,k-1,k-2,?,1}中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类

1