编写下列算法(假定下面所用的串均采用顺序存储方式,参数ch、ch1和ch2均为字符型):

来源:百度知道 编辑:UC知道 时间:2024/07/02 02:39:29
将串r中所有其值为ch1的字符换成ch2的字符。
将串r中所有字符按照相反的次序仍存放在r中。
从串r中删除其值等于ch的所有字符。
从串r1中第index个字符起求出首次与字符r2相同的子串的起始位置。
从串r中删除所有与串r3相同的子串(允许调用第(4)小题的函数和第(3)小题的删除子串的函数)。

'1
//将串r中所有其值为ch1的字符换成ch2的字符
void chage(char *r,char ch1,char ch2)
{
for(int i=0;i<max;i++)//max为定义r数组最大的值
{
if(r[i]==ch1)
r[i]=ch2;
}
}

'2
//将串r中所有字符按照相反的次序仍存放在r中
void chageadd(char *r)
{
char temp;
int make=max-1;//max为定义r数组最大的值
for(int a=0;a<=max/2;a++)
{
temp=r[a];
r[a]=r[make-a];
r[make-a]=temp;
}
}
'3//删除r中值为ch
void del(char *r,char ch)
{
int count=max;//标记删除表后的实际长度
for(int i=0;i<count;i++)
{
if(r[i]==ch)
{
for(int t=i;t<count;t++)
r[i]=r[i+1];
}
count--;
}
if(count=max)
cout<<"r中无ch!";
}
'4 //从串r1中第index个字符起求出首次与字符r2相同的子串的起始位置
iint indexW(char *r,char *r2,int index)
{
int k,j,a;
for( a=index-1;r[a];a++)
for( k=0,j=a;r[j]==r2[k];k++,j++)
if(r2[k+1]==NULL)
r