ww13803608901ww @ 2024-12-20 18:42:35
#include<stdio.h>
#include<string.h>
int main()
{
int n,choice,a,b,c,i,p;
char str[150];
char str2[100];
scanf("%d",&n);
getchar();
scanf("%s",str);
for(i=0;i<n;i++){
scanf("%d",&choice);
switch(choice){
case 1:
scanf("%s",&str2);
strcat(str,str2);
printf("%s",str);
break;
case 2:
scanf("%d %d",&a,&b);
for(i=0;i<=b-1;i++){
str[i]=str[a+i];
}
for(i=b;str[i]!='\0';i++){
str[i]='\0';
}
printf("%s",str);
break;
case 3:
scanf("%d %s",&a,str2);
c=strlen(str2);
for(i=a;str[i]!='\0';i++){
str[i+c]=str[i];
}
for(i=a;i<=a+c-1;i++){
str[i]=str2[i-a];
}
printf("%s",str);
break;
case 4:
scanf("%s",str2);
c=strlen(str2);
a=strlen(str);
for(i=0;i<=a-c;i++){
p=1;
for(b=i;b<=i+c-1;b++){
if(str[b]!=str2[b-i]){
p=0;
break;
}
}
if(p){
printf("%d",i);
break;
}
}
if(!p){
printf("-1");
}
break;
}
}
return 0;
}
by NeuroNO1 @ 2024-12-28 19:47:31
@ww13803608901ww你的外层循环用的是i,switch case2时的内层循环也是i,i冲突了。内层循环会将i加到超出输入的n。你要把内层循环的i换掉