求大佬教教
查看原帖
求大佬教教
802842
yxsl楼主2023/2/16 22:36
#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
int main()
{
	char a[200],*b,*c,*p,*p1;
	int i,j,k=0,q,t,x,y;
	
	scanf("%d",&q);
	scanf("%s",a);
	p=a;
	for(i=0;i<q;i++)
	{
		scanf("%d",&t);
		switch(t)
		{
			case 1:b=(char *)malloc(200*sizeof(char));
				   scanf("%s",b);
				   strcat(a,b);
				   printf("%s\n",a);
				   free(b);
				   break;
				   
			case 2:scanf("%d%d",&x,&y);
				   for(j=0;j<y;j++)	 
				   {
				   		printf("%c",*(p+j+x));
				   		*(p+j)=*(p+j+x);
				   } 
				   for(j=0;j<100;j++)
				   {
				   		*(p+y+j)='\0';
				   }
				   printf("\n");
				   break;
				   
			case 3:scanf("%d",&x);
				   b=(char *)malloc(200*sizeof(char));
				   c=(char *)malloc(200*sizeof(char));
				   scanf("%s",b);
				   
				   for(j=x;j<=strlen(a)+1;j++)//这里为什么是j<=strlen(a)+1呀?自己画示意图感觉 
				   {                          //应该是j<strlen(a) ,而且j<strlen(a)与j<=strlen(a) 
				   		c[k]=a[j];            //的效果一样是为什么? 
						a[j]='\0';
						k++;
				   }
				   c[k]='\0';

			   	   strcat(a,b);strcat(a,c);
				   printf("%s\n",a);
				   free(b);free(c);
				   break;
				   
			case 4:b=(char *)malloc(200*sizeof(char));
			       scanf("%s",b);
				   p1=strstr(a,b);
				   if(p1!=NULL)
				   {
				   		printf("%d\n",p1-p);
				   }
				   else
				   {
				   		printf("-1\n");
				   }				  				   
				   free(b);
				   break;	   
		}
	}
	
return 0;	
}

case 3:部分有问题(应该是),样例2,3显示有某一行太短,但自己看不出什么毛病。 (另外这种代码放预览里面感觉好丑陋啊,大佬有让他好看些的排版方法吗)

2023/2/16 22:36
加载中...