凌晨改了很久,几乎每个样例都下载下来照着改了,最后一个点了,改掉之后发现前面的点又错了,破防了。 代码是差一个点的。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char js(char q[]){
int t;
for(t=0;t<strlen(q);t++)
q[t]=' ';
}
struct stu{
int number,a2,b2,a3;
char str1[101],str3[101],str4[101];
};
int main(){
int pan,ll,n,i,j,q,p,mm,f,cd,kkk;
char s[105],c[105],b[105];
struct stu m[105];
js(c);
scanf("%d%s",&n,s);
for(i=1;i<=n;i++){
scanf("%d",&m[i].number);
if(m[i].number==1){
scanf("%s",m[i].str1);
}
if(m[i].number==2){
scanf("%d%d",&m[i].a2,&m[i].b2);
}
if(m[i].number==3){
scanf("%d%s",&m[i].a3,m[i].str3);
}
if(m[i].number==4){
scanf("%s",m[i].str4);
}
}
for(i=1;i<=n;i++){
if(m[i].number==1){
strncat(s,m[i].str1,strlen(m[i].str1)+1);
printf("%s\n",s);
}
if(m[i].number==2){
ll=0;
js(b);
for(j=m[i].a2;j<m[i].a2+m[i].b2;j++){
// printf("%c",s[j]);
b[ll++]=s[j];
}
for(j=0;j<strlen(s);j++)
s[j]=' ';
for(j=0;j<ll;j++){
s[j]=b[j];
// printf("%c",s[j]);
}
//printf("\n");
printf("%s\n",s);
}
if(m[i].number==3){
mm=0;
js(b);
for(j=m[i].a3;j<strlen(s);j++)
{
b[mm++]=s[j];
s[j]=' ';
}
mm=0;
for(j=m[i].a3;j<m[i].a3+strlen(m[i].str3);j++)
s[j]=m[i].str3[mm++];
mm=0;
for(j=m[i].a3+strlen(m[i].str3);j<strlen(s)+strlen(m[i].str3);j++)
s[j]=b[mm++];
for(j=0;j<strlen(s);j++)
printf("%c",s[j]);
printf("\n");
}
if(m[i].number==4){
pan=-1;
mm=0;
f=0;
for(j=0;j<strlen(s);j++){
mm=0;
if(s[j]==m[i].str4[mm]){
// printf("afsdfs\n");
mm=0;
while(s[j+mm]==m[i].str4[mm]){
if(mm==strlen(m[i].str4)-1){
pan=j;
f=1;
}
mm++;
}
}
if(f==1)
break;
}
printf("%d\n",pan);
}
}
}
求大佬帮忙看看,先睡了。