
(问答题) 答题步骤: 1.写出详细设计要求。 2.写出程序源代码。 3.把代码写入visual C++ 中,并编译,运行,截图出运行结果来。
定义一个字符串类CString,并设计一个算法实现,给定关键字str1在字符串str中出现时用关键字str2进行替换的功能。(本题10.0分)
标准答案:
一、详细设计
1、类的描述与定义
(1)私有数据成员
l char *str; 原始字符串。
l char *str1; 目标关键字。
l char *str2; 替换关键字。
l int flag; 标记替换是否完成替换。
(2)公有成员函数
l CString (char *s,char s1[ ],char *s2) :用给定的参数s、s1和s2相对应的初始化数据成员str、str1和str2。flag设置缺省0。
l void Replace () :判断str字符串中是否出现str1,若出现就用str2替换,否则什么都不做。若替换成功了标记flag为1,若替换不成功则标记flag为0。
l void Show( ) :若替换成功,则在屏幕上显示目标关键字、替换关键字和替换后的原始字符串;若不成功则显示原始字符串。
l ~ CString() :释放动态分配的空间。
2、主要函数设计
在主程序中定义字符串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,完成对该类的测试。
二、源程序代码
#include
#include
class CString{
private:
char*str;//原始字符串
char*str1;//目标字符串
char*str2;//替换关键字
int flag;
public:
CString(char*s,char s1[],char*s2)
{
str=new char[strlen(s)+strlen(s2)+strlen(s1)+1];
str1=new char[strlen(s1)+1];
str2=new char[strlen(s2)+1];
strcpy(str,s);
strcpy(str1,s1);
strcpy(str2,s2);
flag=0;
}
void Replace();
void Show();
~CString()
{ if(str) delete []str;
if(str1) delete []str1;
if(str2) delete []str2;
}
};
void CString::Replace()
{
int i=0;//i记录原始字符串str中第i位开始出现与目标关键字重合;
int k=0,count=0;
while(str[i])
{
while(str[i]!=str1[0]&&str[i]) i++;
if(i
出自:青书学堂 >> 东北林业大学-高级语言程序设计