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

? int fun( ):求公式的累加和。 ? void show( ):输出求得的结果。

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

3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。 具体要求如下:

(1)私有数据成员

? float array[20]:一维整型数组。 ? int n:数组中元素的个数。 (2)公有成员函数

? MOVE(float b[],int m):构造函数,初始化成员数据。

? void average():输出平均值,并将数组中的元素按要求重新放置。 ? void print():输出一维数组。

(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。 4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 具体要求如下:

(1)私有数据成员

? int *array:一维整型数组。 ? int n:数组中元素的个数。 (2)公有成员函数

? MOVE(int b[],int m):构造函数,初始化成员数据。

? void exchange():输出平均值,并将数组中的元素按要求重新放置。 ? void print():输出一维数组。 ? ~MOVE():析构函数。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

5.定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。 具体要求如下:

(1)私有数据成员

? int n:整型数字。

? int y: 标记是否为回文数。 (2)公有成员函数

? Palindrome (int x) :构造函数,根据x参数初始化数据成员n,y初

始化为0。

? void huiwen () :判断数n是否为绝对回文数。 ? void show( ) :若该数为回文数,则在屏幕显示。

(3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome类对象p,

用a初始化p,完成对该类的测试。

6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。

8

具体要求如下:

(1)私有数据成员

? char *str;

? int y:标记是否为回文字符串。

(2)公有成员函数

? String (char *s) :构造函数,用给定的参数s初始化数据成员str。y

初始化为0。

? void huiwen () :判断str所指向的字符串是否为回文字符串。 ? void show( ) :在屏幕上显示字符串。

(3)在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串。定义一个

String类对象test,用s初始化test,完成对该类的测试。

7.建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。

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

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

? int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。 ? int startnum:折叠方阵的起始数。 ? int n:存放方针的层数。 (2)公有成员函数

? PHALANX (int s, int m ):构造函数,初始化成员数据。 ? void process():生成起始数为startnum的n行方阵。 ? void print():输出折叠方阵。 ? ~ PHALANX( ):析构函数。 (3)在主程序中对该类进行测试。

8.建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。

9

1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

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

? int a[20] [20]:二维整型数组存放螺旋方阵。 ? int startnum:螺旋方阵的起始数。 ? int n:存放方针的层数。 (2)公有成员函数

? MATRIX (int s, int m ):构造函数,初始化成员数据startnum和n。 ? void process():生成起始数为startnum的n行螺旋方阵。 ? void print():输出螺旋方阵。

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

9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。具体要求如下: (1)私有数据成员

? char *str:指向要统计的字符串。

? char (*p)[2]:动态分配二维空间,用以存放str所指字符串中出现的

字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。 ? int size:存放字符串中出现的所有不同的字符的个数。

(2)公有成员函数

? CString (char *s) :根据s参数初始化数据成员str;p和size初始值为

0。

? void Count():p根据s所指字符串长度分配空间。然后把str所指字符

串中的每个字符放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:可以借助临时数组或指针来实现)。 ? void Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。 ? ~CString():释放动态分配的空间。

(3)在主程序中定义字符串char s[]=”abdabcdesffffd”。定义一个CString类对

象test,用s以初始化test,完成对该类的测试。

10.定义一个字符串类CString,并设计一个算法实现,给定关键字str1在字符串str

10

中出现时用关键字str2进行替换的功能。 具体要求如下: (1)私有数据成员

? char *str; 原始字符串。 ? char *str1; 目标关键字。 ? char *str2; 替换关键字。

? int flag; 标记替换是否完成替换。

(2)公有成员函数

? CString (char *s,char s1[ ],char *s2) :用给定的参数s、s1和s2相对应

的初始化数据成员str、str1和str2。flag设置缺省0。

? void Replace () :判断str字符串中是否出现str1,若出现就用str2替

换,否则什么都不做。若替换成功了标记flag为1,若替换不成功则标记flag为0。

? void Show( ) :若替换成功,则在屏幕上显示目标关键字、替换关键

字和替换后的原始字符串;若不成功则显示原始字符串。 ? ~ CString() :释放动态分配的空间。

(3) 在主程序中定义字符串char s[]=”I am student, you are student too, we are

all student.”作为原始字符串,定义char s1[]=” student”作为目标关键字,定义char s2[]=”teacher”作为替换关键字。定义一个CString类对象test,用s,s1和s2初始化test,完成对该类的测试。

11.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串

等长)。例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。 具体要求如下: (1)私有数据成员

? char str1[80] :存放被插入的字符串。 ? char str2[40] :存放待插入的字符串。 (2)公有成员函数

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

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

12.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串

不等长)。例如将字符串“abcde” 交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。 具体要求如下:

(1)私有数据成员

? char str1[60] :存放被插入的字符串。 ? char str2[40] :存放待插入的字符串。 ? char str3[100] :存放插入后的字符串。

11