提取数字串按数值排序

描述

给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用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;
}
发布了113 篇原创文章 · 获赞 2 · 访问量 1550

猜你喜欢

转载自blog.csdn.net/C_Dreamy/article/details/103767896
今日推荐