c++改错题,救命啊

来源:百度知道 编辑:UC知道 时间:2024/09/21 14:36:23
#include<iostream.h>
#include<string.h>
int at(char*s1,char*s2)
{ for(int i=0;s1[i];i++){
for(int j=0;s2[j];j++){
if(s1[i+j])break;
if(s1[i+j]!=s2[j])break;
}
if(!s2[j])
return j;
}
return strlen(s1);
}
void invert(char str[],int n1,int n2)
{ char*p1=str+n1,*p2=str+n2-1;
while(*p1<*p2){
char t=*p1;
*p1=*p2;
*p2=t;
p1++;
p2--;
}
}
char *process (char*s,char*s1,char*s2)
{ int n1=at(s,s1),n2=at(s,s2);
int max,min;
if(n1>n2)
max=n1,min=n2+strlen(s2);
else
max=n2,min=n1+strlen(s1);
invert(s,min,max);
return *s;
}
void main()
{ char p[]="mmabc123456000dd",*p1="000",*p2="abc";
cout<<p<<endl;
cout<<p1<<endl;
cout<<p2<<endl;
cout<<process(p,p1,p2)<<endl;
}
最后要输出&qu

#include<iostream.h>
#include<string.h>

int at(char*s1,char*s2)
{
int i,j;

for( i=0;s1[i];i++)
{
for( j=0;s2[j];j++)
{
if(!s1[i+j])break;
if(s1[i+j]!=s2[j])break;
}
if(j==strlen(s2))
return i;
}
return -1;
}

void invert(char ** str,int n1,int n2)
{
char*p1,*p2;
p1=(*str)+n1;
p2=(*str)+n2-1;
while(p1<p2){
char t=*p1;
*p1=*p2;
*p2=t;
p1++;
p2--;
}

}

char * process (char *s,char*s1,char*s2)
{
int n1=at(s,s1),n2=at(s,s2);
int max,min;
if(n1>n2)
{
max=n1;
min=n2+strlen(s2);
invert(&s,min,max);
}
else
{
max=n2;
min=n1+strlen(s1);
invert(&s,min,max);
}

return s;
}

void main()
{ char p[]="mmabc123456000dd",*p1="000",*p2="abc";