搜题
问题   更新时间2023/4/3 12:59:00

(问答题) 答题步骤: 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
王老师:19139051760(拨打)