码迷,mamicode.com
首页 > 其他好文 > 详细

挑剔的小杜

时间:2015-07-22 23:02:33      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

挑剔的小杜

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述

小杜一直都不喜欢数学,但是他特爱语文,所以对英语也非常感兴趣。所以他也就有个习惯,一看到字母里面插有数字,一定要把他全部划去。

现在给你纸,纸上有很多既含有字母,又含有数字的句子(还包括一些标点符号)。你需要将数字找出来放在一边,并组成一个最大的数。然后逆序输出所有字母,和那个最大的数。

输入

第一行:N表示有多少组数据。
接下来的N行,每行有一句话,长度不超过1000

输出

每句话对应输出两行。
第一行输出字母的总个数及其所有的字母(按原来输入的相反的顺序输出),中间需要一个空格分开。
第二行输出那个数字的总个数及最大的数,中间需要一个空格分开。
(如果没有字母或数字,则对应只需要输出一个0

样例输入

2

abcabc123abc.

aaa

样例输出

9 cbacbacba

3 321

3 aaa

0


代码1:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int com(const void *a,const void *b)
{
	return *(int *)a-*(int *)b;
}
int main(void)
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		char str[1000],ch[1000];
	    int  num[1000];
		int count1=0,count2=0;
		scanf("%s",str);
		int j=0,k=0;
		for(int i=0;i<strlen(str);i++)
		{
			if(str[i]>='0'&&str[i]<='9')
			{
				num[j++]=str[i]-'0';
				count1++;
			}
			if(str[i]>='a'&&str[i]<='z')
			{
				ch[k++]=str[i];
				count2++;
			}
		}
		num[j]='\0';
		ch[k]='\0';
		qsort(num,count1,sizeof(num[0]),com);
		if(count2!=0)
		{
			printf("%d ",count2);
			for(int j=count2-1;j>=0;j--)
			{
				printf("%c",ch[j]);
			}
			printf("\n");
		}
		else
		{
			printf("0\n");
		}
		if(count1!=0)
		{
			printf("%d ",count1);
			for(int j=count1-1;j>=0;j--)
			{
				printf("%d",num[j]);
			}
			printf("\n"); 
		}
		else
		{
			printf("0\n");
		}
	}	
	return 0;
} 

代码2:

#include<stdio.h>
int num[1003];
char str[1003];
int main()
{
	int n=0,k=0,t=0,i,j,a,b=1;
	char ch;
	scanf("%d",&n);
	getchar();
	while(n--)
	{
		for(i=0;i<=1003;i++)
			num[i]=0;
		j=0;
		i=0;
		while((ch=getchar())!='\n')
		{
			if(ch>='0'&&ch<='9')
			{
				num[i++]=ch-'0';
			}
			if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
			{
				str[j++]=ch;
			}
		}
		str[j]='\0';   
		for(k=1;k<i;k++)
		{
			for(a=0;a<i-k;a++)
			{
				if(num[a]<num[a+1])
				{
					t=num[a];
					num[a]=num[a+1];
					num[a+1]=t;
				}
			}
		}
		printf("%d ",j);
		for(k=j-1;k>=0;k--)
			printf("%c",str[k]);
		printf("\n%d ",i);
		for(k=0;k<i;k++)
			printf("%d",num[k]);
		printf("\n");
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

挑剔的小杜

标签:

原文地址:http://blog.csdn.net/qq_16997551/article/details/47009373

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!