XDOJ - 拼数字并排序
类别:综合
时间限制:1S
内存限制:1000Kb
问题描述:
对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出。
例如字符串“abc123d5e7f22k9”中共有5个数字123,5,7,22,9,因此应输出123 22 9 7 5。
输入说明:
输入为一个字符串,字符串长度不超过100,其中最长的连续数字不超过10个,字符串中至少包含1个数字。
输出说明:
对于输入的字符串,在一行上输出排序结果,整数间以一个空格间隔。
输入样例:
abc123d5e7f22k9
输出样例:
123 22 9 7 5
#include<stdio.h>
#include<string.h>
int main()
{
char b[100];
int a[10]={0},i,j,end,l=0,c=0,t;
gets(b);
for(i=0;i<strlen(b)-1;i++)
{
if((b[i]<'0')||(b[i]>'9'))
continue;
if(b[i]>='0'&&b[i]<='9')
{
end=i;
l=l+1;
}
if(b[i+1]>='0' && b[i+1]<='9')
{
end=i+1;
l=l+1;
}
else if((b[i+1]<'0')||(b[i+1]>'9'))
{
for(j=end-l+1;j<=end;j++)
a[c]=a[c]*10+b[j]-48;
l=0;
c++;
}
if(i==strlen(b)-2 && l!=0)
{
for(j=end-l+1;j<=end;j++)
a[c]=a[c]*10+b[j]-48;
l=0;
c++;
}
}
for(j=0;j<c-1;j++)
{
for(i=0;i<c-1-j;i++)
{
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<c;i++)
printf("%d ",a[i]);
return 0;
}