BeGa 贝格 2022-01-15 12:27 采纳率: 84.6%
浏览 66

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

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

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

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-15 17:19
    关注
    #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
    

    展开全部

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部