求助
查看原帖
求助
802842
yxsl楼主2023/2/18 19:16
#include<stdio.h>
#include<string.h>
char a[2000];
int p1,p2,p3;
int main()
{
	int flag(int x);
	void unfold(int x);
	int i,j,la;
	scanf("%d%d%d",&p1,&p2,&p3);
	scanf("%s",a);
	la=strlen(a);
	
	for(i=0;i<la;i++)
	{
		if(a[i]=='-'&&i!=0&&i!=la-1)
		{
			switch(flag(i))
			{
				case 0:printf("-");break;
				case 1:unfold(i);break;
				case 2:break;
			}
		}
		else
		{
			printf("%c",a[i]);
		}
	}
return 0;	
}

int flag(int x)
{
	int t=0;
	if(('0'<=a[x-1]<='9'&&'0'<=a[x+1]<='9'&&a[x-1]<a[x+1])||('a'<=a[x-1]<='z'&&'a'<=a[x+1]<='z'&&a[x-1]<a[x+1]))
	{
		if(a[x+1]-a[x-1]==1)
		{
			t=2;
		}
		else 
		{
			t=1;
		}
	}
return t;	
}

void unfold(int x)
{
	char letter(char x);
	char c1,c2;
	int i,j;
	c1=a[x-1];c2=a[x+1];
	if(p3==1)
	{
		while(c1<c2-1)
		{
			c1++;
			for(j=0;j<p2;j++)
			{
				printf("%c",letter(c1));
			}			
		}
	}
	else
	{
		while(c1<c2-1)
		{
			c2--;
			for(j=0;j<p2;j++)
			{
				printf("%c",letter(c2));
			}			
		}
	}
}

char letter(char x)
{
	if(p1==1)return x;
	if(p1==2)return x-32;
	if(p1==3)return '*';
}

有用例过不了,不知道为什么,求助大佬

2023/2/18 19:16
加载中...