}
};
voidmain()
{
SPa(3,3);
a.power(3,3);
a.fun();
a.A();
}四、实践小结
掌握用循环语句求m^n,和m!
,熟练掌握函数的调用。
五、运行结果
任务三
一、实践任务
3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。
二、详细设计
1、类的描述与定义
(1)私有数据成员
lfloatarray[20]:
一维整型数组。
lintn:
数组中元素的个数。
(2)公有成员函数
lMOVE(floatb[],intm):
构造函数,初始化成员数据。
lvoidaverage():
输出平均值,并将数组中的元素按要求重新放置。
lvoidprint():
输出一维数组。
2、主要函数设计
在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。
三、源程序清单
四、实践小结
应熟练掌握数组与指针的应用。
五、运行结果
任务四
一、实践任务
4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。
二、详细设计
1、类的描述与定义
(1)私有数据成员
lint*array:
一维整型数组。
lintn:
数组中元素的个数。
(2)公有成员函数
lMOVE(intb[],intm):
构造函数,初始化成员数据。
lvoidexchange():
输出平均值,并将数组中的元素按要求重新放置。
lvoidprint():
输出一维数组。
l~MOVE():
析构函数。
2、主要函数设计
在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
三、源程序清单
四、实践小结
学会求数组中最大元素与最小元素方法,并实现交换。
五、运行结果
任务六
一、实践任务
6.定义一个字符串类String,实现判断该字符串是否为回文字符串。
所谓回文字符串,是指该字符串左右对称。
例如字符串“123321”是回文字符串。
二、详细设计
1、类的描述与定义
(1)私有数据成员
lchar*str;
linty:
标记是否为回文字符串。
(2)公有成员函数
lString(char*s):
构造函数,用给定的参数s初始化数据成员str。
y初始化为0。
lvoidhuiwen():
判断str所指向的字符串是否为回文字符串。
lvoidshow():
在屏幕上显示字符串。
2、主要函数设计
在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。
定义一个String类对象test,用s初始化test,完成对该类的测试。
三、源程序清单
四、实践小结
掌握判断回文字符串的一般形式。
五、运行结果
任务十一
一、实践任务
11.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。
例如将字符串“abcde”交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。
二、详细设计
1、类的描述与定义
(1)私有数据成员
lcharstr1[80]:
存放被插入的字符串。
lcharstr2[40]:
存放待插入的字符串。
(2)公有成员函数
lSTRING(char*s1,char*s2):
构造函数,用s1和s2初始化str1和str2。
lvoidprocess():
将str2中的字符串插入到str1中。
lvoidprint():
输出插入后的字符串。
2、主要函数设计
在主程序中定义STRING类的对象test对该类进行测试。
三、源程序清单
#include
#include
classSTRING{
private:
charstr1[80];//存放被插入的字符串;
charstr2[40];//存放待插入的字符串;
public:
STRING(char*s1,char*s2)
{
strcpy(str1,s1);
strcpy(str2,s2);
}
voidprocess();
voidprint();
};
voidSTRING:
:
process()
{
inti,j;
intn=strlen(str1);
if(strlen(str2)>strlen(str1))
{//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:
abcde->abcde->空格处依次插入ABCDEFG->aAbBcCdDeEFG;
for(i=n-1;i>0;i--)
{
str1[i+i]=str1[i];//被插入的字符串由最后一位开始各位向后移动i位;
}
for(i=1,j=0;i<2*n;i+=2,j++)
{
str1[i]=str2[j];//在空出的位置处依次插入字符串;
}
i--;
for(;j<=strlen(str2);j++,i++)
{
str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入;
}
}
else//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法:
ABCDEFG->ABCDEFG->空格处插入abcde->AaBbCcDdEeFG;
{
for(i=n;i>strlen(str2)-1;i--)
{
str1[i+strlen(str2)]=str1[i];//比待插入的字符串长的部分均向后移strlen(str2)位;
}
for(i=strlen(str2)-1;i>0;i--)
{
str1[i+i]=str1[i];//之前的部分均向后移i位;
}
for(i=1,j=0;i<2*strlen(str2);i+=2,j++)
{
str1[i]=str2[j];//将待插入的字符串插入空格处,完成插入;
}
}
}
voidSTRING:
:
print()//输出插入后的字符串
{
cout<<"插入后的字符串为:
"<}
voidmain()//测试
{
STRINGtest("ABCDE","abcde");
test.process();
test.print();
}
四、实践小结
发现字符插入的规律,再依次放入相应字符位置。
五、运行结果
任务十二
一、实践任务
12.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。
例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。
二、详细设计
1、类的描述与定义
(1)私有数据成员
lcharstr1[60]:
存放被插入的字符串。
lcharstr2[40]:
存放待插入的字符串。
lcharstr3[100]:
存放插入后的字符串。
(2)公有成员函数
lSTRING(char*s1,char*s2):
构造函数,用s1和s2初始化str1和str2。
lvoidprocess():
将str2中的字符串插入到str1中,存放到str3中。
lvoidprint():
输出插入后的字符串。
2、主要函数设计
在主程序中定义STRING类的对象test对该类进行测试。
三、源程序清单
#include
#include
classSTRING{
private:
charstr1[60];
charstr2[40];
charstr3[100];
public:
STRING(char*s1,char*s2)
{
strcpy(str1,s1);
strcpy(str2,s2);
}
voidprocess();
voidprint();
};
voidSTRING:
:
process()
{
inti,j;
intn=strlen(str1);
if(strlen(str2)>strlen(str1))
{//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:
abcde->abcde->空格处依次插入ABCDEFG->aAbBcCdDeEFG;
for(i=n-1;i>0;i--)
{
str1[i+i]=str1[i];//被插入的字符串由最后一位开始各位向后移动i位;
}
for(i=1,j=0;i<2*n;i+=2,j++)
{
str1[i]=str2[j];//在空出的位置处依次插入字符串;
}
i--;
for(;j<=strlen(str2);j++,i++)
{
str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入;
}
}
else//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法:
ABCDEFG->A