求各位数字组成的最大数

写在前面:

题解是对具体题目的编程实现,不会具体讲解C语言语法。请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~)。在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以在教材或其他学习资源找到这些内容学习。😀


本题的预备知识:

  • 变量的定义与赋值操作
  • 输入(scanf)输出(printf)语句 
  • 排序算法:冒泡排序法 / 选择排序法 / 插入排序法

求各位数字组成的最大数

成绩10开启时间2020年03月28日 星期六 08:00
折扣0.8折扣时间2020年04月20日 星期一 23:00
允许迟交关闭时间2020年04月30日 星期四 23:00

任意输入一个自然数(不大于99999999),输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。

输入: 自然数 n

输出: 各位数字组成的最大数

 测试输入期待的输出时间限制内存限制额外进程
测试用例 1 

40120↵

 

42100↵

1秒64M0

题解

本题其实就是一个排序问题,将输入的数字按照降序排列输出即可...这里我们用字符串读入数字,其实数组中每一位储存的是数字的ascii码,不过ascii码表中数字与其对应的ascii码保持同样的顺序,故可以放心比较。

一些简单的排序算法可以看看这些文章:

排序算法 | 选择排序

排序算法 | 插入排序

(排序算法还是很重要的,刚接触会比较难完全写对,多看看写写就好了...)


完整代码:

下面是用选择排序法实现的 ——

#include <stdio.h>   //导入stdio.h库,里面包含输入输出函数
#include <string.h> //导入string.h库,里面包含strlen(求字符串长度)函数

int main() {
    char a[9];
    scanf("%s", a);
    int len = strlen(a);  //求出字符串的长度(即元素的个数)
    /* 进行选择排序 */
    for (int i = 1; i <= len; i++) {
        char temp = a[i];
        int index = i;
        while (index > 0 && a[index - 1] < temp) {
            a[index] = a[index - 1];
            index--;
        }
        a[index] = temp;
    }
    printf("%s\n", a);
}


有任何问题欢迎评论交流,如果本文对您有帮助不妨点点赞,嘻嘻~ 


end 

欢迎关注个人公众号 鸡翅编程 ”,这里是认真且乖巧的码农一枚。

---- 做最乖巧的博客er,做最扎实的程序员 ----

旨在用心写好每一篇文章,平常会把笔记汇总成推送更新~

在这里插入图片描述

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值