对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出。

对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出。
例如字符串“abc123d5e7f22k9”中共有5个数字123,5,7,22,9,因此应输出123 22 9 7 5。

输入说明
输入为一个字符串,字符串长度不超过100,其中最长的连续数字不超过10个,字符串中至少包含1个数字。

#include <stdio.h>
#include <ctype.h>

#define N 100

void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

void sort(int *a, int n)
{
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (a[i] < a[j])
                swap(&a[i], &a[j]);
}

int main()
{
    char a[N];
    int b[N];
    int n = 0;
    scanf("%s", a);
    const char *p = a;
    while (*p)
    {
        if (isdigit(*p))
        {
            int num = 0;
            do
            {
                num = num * 10 + *p - '0';
                p++;
            } while (*p && isdigit(*p));
            b[n++] = num;
        }
        else
        {
            p++;
        }
    }
    sort(b, n);
    for (int i = 0; i < n; i++)
        printf("%d ", b[i]);
    printf("\n");
    return 0;
}
$ gcc -Wall main.c
$ ./a.out
abc123d5e7f22k9
123 22 9 7 5