VC 课程实践正确答案(1)(4)

2019-08-31 22:51

}

matrix pp(s,m); pp.process(); pp.print();

运行结果

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,完成对该类的测试。

程序源代码

#include #include class cstring{ char*str; char (*p)[2]; int size; public: cstring(char *s);

void count(); void show(); ~cstring(); };

cstring::cstring(char*s) { p=0; size=0; str=s; }

void cstring::count() { p=new char[strlen(str)][2]; char n; char *p1,*p2; for(int i=0;str[i];i++) { n='\\0'; p1=&str[i]; for(int m=0;str[m];m++) { p2=&str[m]; if(*p1==*p2)n++; p2++; } p[i][0]=str[i]; p[i][1]=n; } }

void cstring::show() { for(int i=0;i

}

cstring::~cstring() { delete []p; }

void main() { char s[]=\ cstring test(s); test.count(); test.show(); }

运行结果

10.定义一个字符串类CString,并设计一个算法实现,给定关键字str1在字符串str中出现时用关键字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,完成对该类的测试。

程序源代码

#include #include class cstring{ char *str; char *str1; char *str2; int flag; public: cstring(char*s,char s1[],char *s2); void replace(); void show(); ~cstring(); };

cstring::cstring(char*s,char s1[],char *s2) { str=new char[strlen(s)+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 cstring::replace() { int i,n1,n2,y=1; for(i=0;str[i];i++) { if(str[i]==str1[0]) { for(n1=i,n2=0;str1[n2];n1++,n2++) if((str[n1]!=str1[n2])||(str[n1]=='\\0')) { y=0; break; } if(y==1) { char pp[100]; for(int x=0,p=i;x<(strlen(str1));p++,x++) { str[p]=str2[x]; } flag=1;

} } } }

void cstring::show() {

if(flag==1) cout<<\改后\else cout<<\未改\}

cstring::~cstring() { delete []str; delete []str1; delete []str2; }

void main() { char s[]=\ char s1[]=\ char s2[]=\ cstring test(s,s1,s2); test.replace(); test.show(); }

运行结果

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():输出插入后的字符串。


VC 课程实践正确答案(1)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:黄冈中学最新高考数学题型分析含黄冈密卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: