VC++课程实践题目.docx

上传人:b****7 文档编号:23897793 上传时间:2023-05-22 格式:DOCX 页数:15 大小:20.07KB
下载 相关 举报
VC++课程实践题目.docx_第1页
第1页 / 共15页
VC++课程实践题目.docx_第2页
第2页 / 共15页
VC++课程实践题目.docx_第3页
第3页 / 共15页
VC++课程实践题目.docx_第4页
第4页 / 共15页
VC++课程实践题目.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

VC++课程实践题目.docx

《VC++课程实践题目.docx》由会员分享,可在线阅读,更多相关《VC++课程实践题目.docx(15页珍藏版)》请在冰豆网上搜索。

VC++课程实践题目.docx

VC++课程实践题目

VC++课程实践题目

基础题

1.试建立一个类PP,求出下列多项式的前n项的值。

n01Pn(x)xn1

((2n1)xP(x)(n1)P(x))/nn1n1n-2

具体要求如下:

(1)私有数据成员

intn:

前若干项的项数。

doublex:

存放x的值。

double*p:

根据n的大小动态申请存放Pn(x)前n项的数组空间。

(2)公有成员函数

PP(intnum,doublex1):

构造函数,初始化数据成员n和x,使p指向动态申

请的数组空间。

~PP():

析构函数,释放p指向的动态内存空间。

doublefun(intn1,doublex):

递归函数,用于求多项式Pn(x)的第n1项。

注意:

将递归公式中的n用作函数参数。

本函数供process函数调用。

voidprocess():

完成求前n项的工作,并将它们存放到p指向的动态数组中。

voidshow():

输出n和x,并将前n项以每行4个数的形式输出到屏幕上。

(3)在主函数中完成对该类的测试。

先输入num和x1,并定义一个PP类的对象items,

用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。

2.试建立一个类SP,求f(n,k)1k2k3k....nk,另有辅助函数power(m,n)用于求m。

具体要求如下:

(1)私有成员数据。

intn,k:

存放公式中n和k的值;

(2)公有成员函数。

SP(intn1,intk1):

构造函数,初始化成员数据n和k。

intpower(intm,intn):

求mn。

intfun():

求公式的累加和。

voidshow():

输出求得的结果。

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

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

具体要求如下:

(1)私有数据成员

floatarray:

一维整型数组。

intn:

数组中元素的个数。

(2)公有成员函数n

MOVE(floatb[],intm):

构造函数,初始化成员数据。

voidaverage():

输出平均值,并将数组中的元素按要求重新放置。

voidprint():

输出一维数组。

(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。

4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。

具体要求如下:

(1)私有数据成员

int*array:

一维整型数组。

intn:

数组中元素的个数。

(2)公有成员函数

MOVE(intb[],intm):

构造函数,初始化成员数据。

voidexchange():

输出平均值,并将数组中的元素按要求重新放置。

voidprint():

输出一维数组。

~MOVE():

析构函数。

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

5.定义一个类Palindrome,实现绝对回文数。

设计一个算法实现对任意整型数字判断是否为绝对回文数。

所谓绝对回文数,是指十进制数和二进制数均对称的数。

具体要求如下:

(1)私有数据成员

intn:

整型数字。

inty:

标记是否为回文数。

(2)公有成员函数

Palindrome(intx):

构造函数,根据x参数初始化数据成员n,y初始化为0。

voidhuiwen():

判断数n是否为绝对回文数。

voidshow():

若该数为回文数,则在屏幕显示。

(3)在主程序中定义inta,由键盘输入数字。

定义一个Palindrome类对象p,用a初

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

6.定义一个字符串类String,实现判断该字符串是否为回文字符串。

所谓回文字符串,是指该字符串左右对称。

例如字符串“*****”是回文字符串。

具体要求如下:

(1)私有数据成员

char*str;

inty:

标记是否为回文字符串。

(2)公有成员函数

String(char*s):

构造函数,用给定的参数s初始化数据成员str。

y初始化

为0。

voidhuiwen():

判断str所指向的字符串是否为回文字符串。

voidshow():

在屏幕上显示字符串。

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

定义一个String

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

7.建立一个类*****,生成并显示一个折叠方阵。

折叠方阵如下图所示。

折叠方阵的生成过程为:

起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。

具体要求如下:

(1)私有数据成员

int(*p):

指向按照折叠规律存放方阵的二维整型数组。

intstartnum:

折叠方阵的起始数。

intn:

存放方针的层数。

(2)公有成员函数

*****(ints,intm):

构造函数,初始化成员数据。

voidprocess():

生成起始数为startnum的n行方阵。

voidprint():

输出折叠方阵。

~*****():

析构函数。

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

8.建立一个MATRIX,生成并显示一个螺旋方阵。

螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。

具体要求如下:

(1)私有数据成员

inta:

二维整型数组存放螺旋方阵。

intstartnum:

螺旋方阵的起始数。

intn:

存放方针的层数。

(2)公有成员函数

MATRIX(ints,intm):

构造函数,初始化成员数据startnum和n。

voidprocess():

生成起始数为startnum的n行螺旋方阵。

voidprint():

输出螺旋方阵。

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

9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。

具体要求如下:

(1)私有数据成员

char*str:

指向要统计的字符串。

char(*p):

动态分配二维空间,用以存放str所指字符串中出现的字符及

其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数

时,输出该ASCII字符对应的ASCII值即可)。

intsize:

存放字符串中出现的所有不同的字符的个数。

(2)公有成员函数

CString(char*s):

根据s参数初始化数据成员str;p和size初始值为0。

voidCount():

p根据s所指字符串长度分配空间。

然后把str所指字符串中的

每个字符放入p数组中,设置每个字符的出现次数为1。

根据p数组统计不同

字符出现的频率,并求得size的实际大小。

最后根据size的实际大小,重新

分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:

可以借

助临时数组或指针来实现)。

voidShow():

屏幕显示字符串、字符串的每个字符和与之对应的次数。

~CString():

释放动态分配的空间。

(3)在主程序中定义字符串chars[]=”abdabcdesffffd”。

定义一个CString类对象test,

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

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

时用关键字str2进行替换的功能。

具体要求如下:

(1)私有数据成员

char*str;原始字符串。

char*str1;目标关键字。

char*str2;替换关键字。

intflag;标记替换是否完成替换。

(2)公有成员函数

CString(char*s,chars1[],char*s2):

用给定的参数s、s1和s2相对应的初始

化数据成员str、str1和str2。

flag设置缺省0。

voidReplace():

判断str字符串中是否出现str1,若出现就用str2替换,否则

什么都不做。

若替换成功了标记flag为1,若替换不成功则标记flag为0。

voidShow():

若替换成功,则在屏幕上显示目标关键字、替换关键字和替换

后的原始字符串;若不成功则显示原始字符串。

~CString():

释放动态分配的空间。

(3)在主程序中定义字符串chars[]=”Iamstudent,youarestudenttoo,weareall

student.”作为原始字符串,定义chars1[]=”student”作为目标关键字,定义char

s2[]=”teacher”作为替换关键字。

定义一个CString类对象test,用s,s1和s2初

始化test,完成对该类的测试。

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

例如将字符串“abcde”交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。

具体要求如下:

(1)私有数据成员

charstr1:

存放被插入的字符串。

charstr2:

存放待插入的字符串。

(2)公有成员函数

STRING(char*s1,char*s2):

构造函数,用s1和s2初始化str1和str2。

voidprocess():

将str2中的字符串插入到str1中。

voidprint():

输出插入后的字符串。

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

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

例如将字符串“abcde”交叉插入字符串“*****”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。

具体要求如下:

(1)私有数据成员

charstr1:

存放被插入的字符串。

charstr2:

存放待插入的字符串。

charstr3:

存放插入后的字符串。

(2)公有成员函数

STRING(char*s1,char*s2):

构造函数,用s1和s2初始化str1和str2。

voidprocess():

将str2中的字符串插入到str1中,存放到str3中。

voidprint():

输出插入后的字符串。

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

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

素移到最前面。

具体要求如下:

(1)私有数据成员

intarray:

一维整型数组。

intn:

数组中元素的个数。

(2)公有成员函数

MOVE(intb[],intm):

构造函数,初始化成员数据。

voidchange():

进行循环换位。

voidprint():

输出一维数组。

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

14.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。

具体要求如下:

(1)私有数据成员

char*array:

一维字符数组。

intn:

数组中元素的个数。

(2)公有成员函数

MOVE(charb[],intm):

构造函数,初始化成员数据。

voidchange():

进行排序换位。

voidprint():

输出一维数组。

~MOVE():

析构函数。

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

15.定义一个一维数组类Carray,并根据给定算法实现对原始一维数组进行线性变换。

这里给定的线性变换算法为:

T(bx)=bT(x)+i;其中,b为变换常量,x为变量,i为当前类中成员数组的下标值。

根据该算法,原始数组在变化后,当前数组元素的值是由常量b和i下标来决定的。

具体要求如下:

(1)私有数据成员

int*a:

指针a指向一个动态分配的原始数组。

intn:

n表示该数组的大小。

intb:

线性变换的常量。

(2)公有成员函数

Carray(inta[],intn,intx):

用给定的参数a、n和x初始化数据成员a、n和b。

缺省都设置为0。

voidTransform():

根据上述变化算法,求解数组变换。

voidShow():

在屏幕上显示数组元素。

~Carray():

释放动态分配的空间。

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

入,作为线性变换的常量。

定义一个Carray类对象test,用arr初始化test,完成对该类的测试。

16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。

方阵的变换形式为:

F=W*fT

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

0110

0110

1001

具体要求如下:

(1)私有数据成员

int(*a):

a指向方阵数组。

intw:

w为变换矩阵。

intm:

m表示方阵的行和列数。

(2)公有成员函数

CMatrix(inta[],intm):

用给定的参数a和m初始化数据成员a和m;对变

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

voidTransform():

根据上述变换算法,求出变换后的数组形式,存放在原始

数组内。

voidshow():

在屏幕上显示数组元素。

~CMatrix():

释放动态分配的空间。

(3)在主程序中定义数组intarr[]={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/1x3/3!

x5/5!

x7/7!

....

(1)n1x(2n1)/(2n1)!

具体要求如下:

(1)私有成员数据。

intx:

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

intn:

输入公式中n的值。

(2)公有成员函数。

SIN(intx,intn):

构造函数,用于初始化x和n的值。

intpower(intq):

求q!

的值。

intmi(intm,intn):

求mn的值。

intfun():

用于求SIN(X)的值。

voidshow():

输出求得的结果。

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

18.试建立一个类VAR,用于求n(n100)个数的均方差。

均方差的计算公式为

(xix)2

d,其中平均值为xni0n1xi0n1in。

具体要求如下:

(1)私有成员数据。

doublea:

用于存放输入的n个数。

intn:

实际输入数的个数n。

(2)公有成员函数。

VAR(doublex[],intn1):

构造函数,初始化成员数据a和个数n。

doubleaverage(doublex[],intn):

求平均值,数组x具有n个元素。

voidvariance(doublex[],intn):

求均方差,数组x具有n个元素。

voidshow():

输出求得的均方差。

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

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

如图所示。

1

5

9

1326101437111548121613141516910111256781234

具体要求如下:

(1)私有数据成员

inta:

用于存放方阵。

(2)公有成员函数

Array(inta1[],intn):

构造函数,用给定的参数a1初始化数据成员a。

voidxuanzhuan():

实现对方阵a进行顺时针90度的旋转。

voidshow():

在屏幕上显示数组元素。

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

组。

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

20.定义一个方阵类Array,实现对方阵进行逆时针90度旋转。

如图所示。

1234481216

5678371115

9101112261014

1314151615913

具体要求如下:

(1)私有数据成员

inta:

用于存放方阵。

(2)公有成员函数

Array(inta1[],intn):

构造函数,用给定的参数a1初始化数据成员a。

voidxuanzhuan():

实现对方阵a进行逆时针90度的旋转。

voidshow():

在屏幕上显示数组元素。

(3)在主程序中定义数组intb[]={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:

动态存放在指定范围内求出的所有合数。

intspan1,span2:

存放指定范围的下限和上限。

intnum:

存放span1与span2之间的合数个数。

(2)公有成员函数

NUM(intn1,intn2):

构造函数,用参数n1和n2初始化span1和span2,同时

初始化num。

intisComposite(intx):

判断x是否为合数。

若是合数,返回1,否则,返回0。

voidprocess():

求指定范围内的所有合数,把它们依次存放在数组data中,并

将求出的合数个数赋给num。

voidprint():

输出求出的素数个数及所有合数,每行输出8个合数。

~NUM():

释放动态分配的存储空间。

(3)在主函数中完成对该类的测试。

定义一个NUM类对象test,指定查找范围为100~200,即求100至200之间的所有合数。

通过test调用成员函数完成求合数及输出合数的工作。

22.建立一个类Saddle_point,求一个数组中的所有鞍点。

提示:

鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。

具体要求如下:

(1)私有数据成员

inta:

存放二维数组元素。

intb:

存放二维数组中的鞍点值。

intnum:

存放鞍点个数。

(2)公有成员函数

Saddle_point(intdata[]):

构造函数,用参数intdata[]初始化数组a,,同时初

始化数组b与num的值均为0。

voidprocess():

求数组a所有鞍点(如果有鞍点),把它们行、列、及值相应存

放在数组b中,并将求出的鞍点个数赋给num。

voidprint():

输出数组a、鞍点个数,与鞍点坐标及相应值。

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

定义一个Saddle_point类对象fun。

通过fun调用成员函数完成求鞍点及输出工作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1