VC++程序设计课程实践基础题 下载本文

(2)公有成员函数

? STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。 ? void process():将str2中的字符串插入到str1中,存放到str3中。 ? void print():输出插入后的字符串。

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

13.建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后

三个元素移到最前面。 具体要求如下: (1)私有数据成员

? int array[20]:一维整型数组。 ? int n:数组中元素的个数。 (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 () :根据上述变化算法,求解数组变换。

12

? 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*fT

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

1 0 0 1 0 1 1 0 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)的值。

13

n? void show( ):输出求得的结果。

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

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

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

具体要求如下:

(1)私有成员数据。

? double a[100]:用于存放输入的n个数。 ? int n:实际输入数的个数n。 (2)公有成员函数。

? 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 13 2 6 10 14 3 7 11 15 4 8 12 16 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4

具体要求如下:

(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

14

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)私有数据成员

? 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:存放鞍点个数。

15