描述
给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从小到大顺序输出结果,输出的整数之间以逗号间隔。如果没有数字,则输出0;例如:*1234.345#6781ad9jk81-11101?aght88ir09kp,其中的整数包括:1234,345,6781,9,81,11101,88,9,从小到大排序后,应该输出:
9,9,81,88,345,1234,6781,11101
输入
在一行内输入一串符号,长度不大于300。输入数据保证提取的整数不超过109。
输出
从小到大排序的整数序列,如果没有数字,则输出0;
样例输入
*1234.345#6781ad9jk81-11101?aght88ir09kp
样例输出
9,9,81,88,345,1234,6781,11101
#include <iostream>
#include <stdio.h>
using namespace std;
#include <cmath>
int i,j=0;
#define A 300+5
#include <cstring>
int main()
{
long long figure[A];
char ch[A];
gets(ch);
int count=0,sum=0;
int len=strlen(ch);
ch[len]='a'; //方便判定,否则不会跳转至 “1”
for(i=0;i<=len;i++)
{
if(ch[i]>='0'&&ch[i]<='9')
{
if(count==0)
{
sum+=ch[i]-'0';
}
else
{
sum=sum*10+ch[i]-'0';
}
count++;
}
else if(count!=0) // "1"
{
figure[j++]=sum;
sum=0;count=0;
}
}
int k;
for(i=1;i<j;i++)
{
for(k=0;k<j-i;k++)
{
int temp;
if(figure[k]>figure[k+1])
{
temp=figure[k];
figure[k]=figure[k+1];
figure[k+1]=temp;
}
}
}
if(j!=0)
{
for(i=0;i<j-1;i++)
{
cout<<figure[i]<<",";
}
cout<<figure[i]<<endl;
}
else
cout<<0<<endl;
return 0;
}