L1-023 输出GPLT (20 分) — 团体程序设计天梯赛

L1-023 输出GPLT (20 分)
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例:
GPLTGPLTGLTGLGLL

#include<stdio.h>
#include<string.h>
int main()
{
	char str[10010];			//储存输入的字符串内存空间
	int g=0,p=0,l=0,t=0;		//这四个变量分别用来计算字符串中出现的次数
	int i,j;					//用于循环和数组下标
	int n;						//得到所输入的字符串长度
	gets(str);					//提供输入功能
	n = strlen(str);			//得到str字符串的长度并赋值给n
	for(i=0;i<n;i++)			//从第一个字母开始一一寻找有没有g,G,t,T,l,L,p,P这些字母
	{							//若存在,则会在for循环都算好其出现的次数,因为每对应依次都会+1
		if(str[i]=='g' || str[i]=='G')
			g++;
		else if(str[i]=='p' || str[i]=='P')
			p++;
		else if(str[i]=='l' || str[i]=='L')
			l++;
		else if(str[i]=='t' || str[i]=='T')
			t++;
	}
	while(n)					//然后之后就是输出环节,每对应一个字母就将其输出,并减1
	{							//直到它们都恢复为了初始值0时,无需打印,则赋n=0,判断为假结束循环
		if(g!=0)
		{	printf("G");	g--;	}
		if(p!=0)
		{	printf("P");	p--;	}
		if(l!=0)
		{	printf("L");	l--;	}
		if(t!=0)
		{	printf("T");	t--;	}
		if(g==0 && p==0 && l==0 && t==0)
			n=0;
	}
	printf("\n");
	return 0;
}

上一篇:PTA 团体程序设计天梯赛-练习集 L2-023 图着色问题 (25分)


下一篇:L2-023 图着色问题 (25 分)