哪里错了,在洛谷ide跑的很奇怪,自测跑的很正确
查看原帖
哪里错了,在洛谷ide跑的很奇怪,自测跑的很正确
701798
cxkssss678楼主2022/10/23 17:11
#include<stdio.h>
#include<string.h>
int main()
{
	int n;
	scanf("%d", &n);
	char S[200] = { 0 };
	char C[200] = { 0 };//临时
	getchar();
	gets(S);
	for (int i = 0; i <n; i++)
	{
		memset(C, 0, sizeof(C));
		gets(C);
		if (C[0] =='1')
		{
			char R[100] = { 0 };//str
			int r = 0;//操作
			sscanf(C, "%d %s", &r, R,100);
			strcat(S,R);
			printf("%s", S);
		}
		else if (C[0] == '2')
		{
			int r, x, y,a=0;
			char R[100] = { 0 };
			sscanf(C, "%d %d %d", &r, &x, &y);
			for (int i = x; i <= x+y-1; i++)
			{
				R[a++] = S[i];
			}
			memset(S, 0,sizeof(S));
			for (int i = 0; i < a; i++)
			{
				S[i] = R[i];
			}
			printf("%s", S);
		}
		else if (C[0] == '3')
		{
			int r, x,l=strlen(S);
			char R[100] = { 0 };
			sscanf(C, "%d %d %s", &r, &x, R,100);
			int b = strlen(R),a=0;
			for (int i = l - 1 + b; i >= x + b; i--)
			{
				S[i] = S[i - b];
			}
			for (int j = x; j < x + b; j++)
			{
				S[j] = R[a++];
			}
			printf("%s", S);
		}
		else if (C[0] == '4')
		{
			int r,l=strlen(S);
			char R[200] = { 0 };
			sscanf(C, "%d %s", &r, R,100);
			int b = strlen(R),a=0,i=0;
			for (i = 0; i < l; i++)
			{
				if (S[i] == R[a]) a++;
				else a = 0;
				if (a == b) break;
			}
			if (a == b)
				printf("%d", i - b + 1);
			else printf("-1");
		}
		if (i < n ) printf("\n");
	}

	return 0;
}
2022/10/23 17:11
加载中...