求助,为什么第5个测试点WA?

P5734 【深基6.例6】文字处理软件

Henryonly @ 2024-11-23 23:14:06

#include<stdio.h>
#include<string.h>
int main()
{
    int status[100];
    int n,length;
    scanf("%d",&n);
    getchar();
    char cha[101];
    char package[101][101];
    scanf("%s",cha);
    length=strlen(cha);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&status[i]);
        if(status[i]==1)
        {
            char cha2[101];
            scanf("%s",cha2);
            strcat(cha,cha2);
            for(unsigned int t=0;t<sizeof(cha);t++)
            {
                package[i][t]=cha[t];
            }
            length+=strlen(cha2);   
        }
        else if(status[i]==2)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            for(int j=a;j<a+b;j++)
            {
                package[i][j-a]=cha[j];
            }
            for(int j=0;j<b;j++)
            {
                cha[j]=package[i][j];
            }
            cha[b]='\0';
            length=b;
        }
        else if(status[i]==3)
        {
            char cha1[101],cha2[101],insert[101];
            int num;
            scanf("%d",&num);
            scanf("%s",insert);
            for(int j=0;j<num;j++)
            {
                cha1[j]=cha[j];
            }
            if(num!=length)
            {
                for(int j=num;j<length;j++)
                {
                    cha2[j-num]=cha[j];
                }
                strcat(cha1,insert);
                strcat(cha1,cha2);
            }
            else
            {
                strcat(cha1,insert);
            }
            for(unsigned int j=0;j<sizeof(cha1);j++)
            {
                cha[j]=cha1[j];
            }
            for(unsigned int t=0;t<sizeof(cha);t++)
            {
                package[i][t]=cha[t];
            }
            length+=strlen(insert);
        }
        else if(status[i]==4)
        {
            char cha0[101];
            scanf("%s",cha0);
            int notebook=0,count=0,middle=0;
            for(unsigned int j=0;j<strlen(cha)-strlen(cha0)+1;j++)
            {
                for(unsigned int m=0;m<strlen(cha0);m++)
                {
                    if(cha0[m]!=cha[m+j])
                    {
                        count=1;
                    }
                }
                if(count==0)
                {
                    notebook=j;
                    middle=1;
                    break;
                }
                count=0;
            }
            if(middle!=0)
            {
                package[i][0]=notebook+'0';
            }
            else
            {
                package[i][0]='-';
                package[i][1]='1';
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%s\n",package[i]);
    }
    return 0;
}

|