若输入“abcde”再输入“ABCDEFG”则会出错(前面的字符串不能比后面短,否则就会出错)。
题:建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。例如将字符串“abcde” 交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。
具体要求如下:
(1)私有数据成员
char str1[60] :存放被插入的字符串。
char str2[40] :存放待插入的字符串。
char str3[100] :存放插入后的字符串。
(2)公有成员函数
STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。
void process():将str2中的字符串插入到str1中,存放到str3中。
void print():输出插入后的字符串。
(3)在主程序中定义STRING类的对象test对该类进行测试。
程序如下:
#include <iostream.h>
#include <string.h>
class STRING{
char str1[60],str2[40],str3[100];
public:
STRING(char *s1,char *s2)
{
strcpy(str1,s1);
strcpy(str2,s2);
}
void process()
{
int k=strlen(str1);
int p=strlen(str2);
int i=0,j=0;
char ss[100];
for (i=p;str1[i];i++){
ss[i-p]=str1[i];ss[k-p]=0;}
for (i=k;i>=0;i--){
str1[i+i]=str1[i];}
for (;str2[j];j++){
str1[j+j+1]=str2[j];}
strcpy(str3,str1);
str3[p+p]=0;
int l=strlen(str3);
int u=strlen(ss);
for(i=0;ss[i];i++)
str3[l+i]=ss[i];
str3[l+u]=0;
}
void print()
{
cout<<"变化后为:"<<str3<<endl;
}
};
void main()
{
char s1[80],s2[40];
cin.getline(s1,60);
cin.getline(s2,40);
STRING test(s1,s2);
test.process();
test.print();
}
等高手...
1、首先在C语言中,string.h中的_strrev函数,声明形式如下。
2、使用_strrev函数,进行示例代码展示,如下图所示。
3、对于string形式的字符串变量,使用reverse函数,声明形式如下。
4、然后使用reverse函数,进行代码示例展示,如下图所示。
5、自己编写字符串反转函数,进行示例代码展示,如下图所示就完成了。
s1、s2的值是通过键盘键入的呀,怎么初始化呢,具体怎么改呀?