【C语言】拆数字组成最大数

news2024/12/14 9:39:55

相信你是最棒哒!!!

文章目录

题目描述

正确代码

法一注释版

简洁版

法二注释版

简洁版


题目描述

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

输入描述

自然数 n

输出描述

各位数字组成的最大数

样例输入
1593
样例输出
9531

正确代码

法一注释版
#include<stdio.h> 

int main () { 
    int n,i,j,q,a[50]; // 声明变量n用于存储输入的数字,i、j、q用于循环,a[50]是一个数组,用于存储数字的每一位
    scanf("%d",&n); // 读取n
    for(i=0;; i++) { // 一个无限循环,用于分解数字n的每一位
        a[i]=n%10; // 取n的最后一位数字,即n除以10的余数,存储在数组a的第i个位置
        n=n/10; // 将n除以10,去掉最后一位数字
        if (n==0) // 如果n变为0,说明数字已经被完全分解
            break; // 跳出循环
    }
    int t; // 声明一个临时变量t,用于交换数字
    for(j=1; j<i; j++) { // 外层循环,控制排序的轮数,从1开始,因为第0位不需要排序
        for(q=0; q<=i-j; q++) { // 内层循环,用于比较并交换相邻的数字
            if(a[q]<a[q+1]) { // 如果当前位置的数字小于下一个位置的数字
                t=a[q]; // 交换两个数字
                a[q]=a[q+1];
                a[q+1]=t;
            }
        }
    }
    for(q=0; q<=i; q++) // 循环输出排序后的数字
        printf("%d",a[q]); // 打印数组a中的每个元素
} // 主函数的结束
简洁版
#include<stdio.h>
int main () {
	int n,i,j,q,a[50];
	scanf("%d",&n);
	for(i=0;;i++) {
		a[i]=n%10;
			n=n/10;
			if (n==0)
			break;
	}
	int t;
	for(j=1; j<i; j++) {
		for(q=0; q<=i-j; q++) {
			if(a[q]<a[q+1]) {
				t=a[q];   
				a[q]=a[q+1];
				a[q+1]=t;
			}
		}
	}
		for(q=0;q<=i;q++)
         printf("%d",a[q]);       
}
法二注释版
#include <stdio.h>  // 包含标准输入输出库,用于scanf和printf函数
#include <stdlib.h> // 包含标准库,提供qsort函数
#include <string.h> // 包含字符串处理库,提供strlen函数

// 比较函数,用于qsort比较两个元素的大小
int compare(const void *a, const void *b) {
    return *(char *)b - *(char *)a; // 如果b指向的字符大于a指向的字符,则返回正数;如果小于,则返回负数;如果相等,则返回0
}

int main() {
    char a[50]; // 声明一个字符数组
    scanf("%s", &a); // 读取一个字符串a
    int l = strlen(a); // 使用strlen函数计算字符串a的长度,并存储在变量l中

    qsort(a, l, sizeof(char), compare); // 使用qsort函数对字符串a进行排序
      // a是要排序的数组的首地址
      // l是要排序的元素个数
      // sizeof(char)指定每个元素的大小,这里是1,因为a是字符数组
      // compare是自定义的比较函数,用于告诉qsort如何比较两个元素

    printf("%s\n", a); // 打印排序后的字符串
    return 0; // 程序正常结束
}
简洁版
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *a, const void *b) {
    return *(char *)b - *(char *)a;
}

int main() 
{
	char a[50];
	scanf("%s",&a);
	int l=strlen(a);
	qsort(a, l, sizeof(char), compare); 
	printf("%s\n", a); 
	
	return 0;
}

总结

这段代码的主要功能是读取用户输入的一个字符串,然后使用 qsort 函数对这个字符串中的字符进行升序排序,并输出排序后的结果。qsort 是一个通用的排序函数,它可以对任何类型的数组进行排序,只要提供了正确的比较函数。在这个例子中,比较函数 compare 被设计为按照字符的ASCII值进行比较,从而实现字符的升序排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[搜广推]王树森推荐算法——基于物体的协同过滤

基于物体的协同过滤 ItemCF 基于物体的协同过滤&#xff08;Item-Based Collaborative Filtering&#xff0c;简称ItemCF&#xff09;是一种经典的推荐系统算法 基本思想 量化用户对物品的兴趣&#xff0c;通过分析用户的行为来找到与目标物品相似的其他物品&#xff0c;然后…

3D 生成重建035-DiffRF直接生成nerf

3D 生成重建035-DiffRF直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 本文提出了一种基于渲染引导的三维辐射场扩散新方法DiffRF&#xff0c;用于高质量的三维辐射场合成。现有的方法通常难以生成具有细致纹理和几何细节的三维模型&#xff0c;并且容易出…

计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

linux - 存储管理

1.了解硬件 -- 磁盘 硬盘有机械硬盘(HDD)和固态硬盘(SDD) 接下来&#xff0c;主要以机械磁盘为例(更具代表性&#xff0c;在linux系统层面&#xff0c;无论是机械磁盘还是固态硬盘&#xff0c;文件的读取和写入都iNode(索引节点)管理文件的元数据和实际数据块) 1.盘片&#x…

打造高效的HIS与DAT文件解析工具

在工业数据采集和存储中&#xff0c;HIS 和 DAT 文件是非常常见的二进制数据格式。然而&#xff0c;解析这些固定块大小的二进制文件并将其转换为易读的 CSV 格式并非易事。本文将深入讲解如何使用 Python 和 PyQt5 打造一款图形化工具&#xff0c;轻松解析和转换这些文件&…

设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1.装饰器模式1.1概念1.2作用1.3应用场景1.4特点1.5类与对象关系1.6实现 2责任链模式2.1概念2.2作用2.3应用场景2.4特点2.5类与对象关系2.6实现 3.对比总结 前言…

【JavaEE】网络(2)

一、网络编程套接字 1.1 基础概念 【网络编程】指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff1b;当然&#xff0c;我们只要满足进程不同就行&#xff0c;所以即便是同一个主机&#xff0c;只要是不同进程&#xff0c;基于网络来传…

题海拾贝:力扣 141.环形链表

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP&#xff0c;Server端为 Outside路由器&#xff0c;Client端为 ASA&#xff0c;两个设备的 NTP传输使用MD5做校验。&#xff08;安全 V4 LAB考点&#xff09; 提示&#xff1a;Outside路由器作为 Server端要配置好正确的时间和时区&#xff0c;ASA防…

IDEA 未启用lombok插件的Bug

项目中maven已引用了lombok依赖&#xff0c;之前运行没有问题的&#xff0c;但有时启动会提示&#xff1a; java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy8 Lombok support…

markdown入门

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

知识库系统,集成neo4j,集成activiti工作流,集成es全文检索,知识图谱血缘关系,nlp知识库

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

AI技术架构:从基础设施到应用

人工智能&#xff08;AI&#xff09;的发展&#xff0c;正以前所未有的速度重塑我们的世界。了解AI技术架构&#xff0c;不仅能帮助我们看懂 AI 的底层逻辑&#xff0c;还能掌握其对各行业变革的潜力与方向。 一、基础设施层&#xff1a;AI 技术的坚实地基 基础设施层是 AI 技…

钉钉机器人消息推送类型案例

CSDN 目录展示 目录 钉钉机器人消息推送1- 文本text类型推送代码案例推送结果参数说明 2- 链接Link类型推送代码案例推送结果参数说明 3- Markdown类型推送代码案例1推送结果1推送代码案例2推送结果2推送代码案例2 (版本2)推送结果2(版本2)参数说明 4- 整体跳转ActionCard类型…

6_Sass 选择器函数 --[CSS预处理]

Sass 提供了一系列的选择器函数&#xff0c;用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则&#xff0c;并且可以减少重复代码。以下是几个常用的选择器函数及其用法&#xff1a; 1. selector-append($selector1, $selector2...) selector-append($select…

Wireshark如何查看数据包时间间隔

1.如果数据包量不大&#xff0c;抓包本身也不大&#xff0c;建议从绝对时间判断&#xff0c;打开wireshark软件&#xff0c;并点开相应要分析的抓包文件。 进入到最上方菜单<视图>,在弹出菜单选择时间显示格式&#xff0c;再在右侧菜单中选择自捕获经过的秒数。 这样就可…

jvm内存优化方式

1. JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a; • 定义&#xff1a;Java虚拟机&#xff0c;是运行Java字节码的抽象计算机。 • 内存管理&#xff1a;负责内存的分配和回收&#xff0c;是JVM内存优化的核心。 2. 堆&#xff08;Heap&#xff09;&#xff1a…

【AI日记】24.12.13 kaggle 比赛 2-3 大扫除、断舍离、自己做饭

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset参考&#xff1a;kaggle 回归类入门比赛 House Prices - Advanced Regression Techniques内容&#xff1a;构建自己的EDA&#xff08…

antdv-<a-button>中属性的使用

UI组件库&#xff08;User Interface Component Library&#xff09;是一种预先构建好的、可重用的用户界面元素集合&#xff0c;旨在帮助开发者更快速、更简便地构建用户界面。这些组件通常包括按钮、表单、导航栏、模态框等&#xff0c;能够提供一致的外观和交互风格&#xf…

Nodejs架构

Node.js 是一个开源的 JavaScript 运行时环境&#xff0c;旨在运行可扩展的应用程序。 Node.js 允许开发人员使用 JavaScript 编写服务器端脚本代码。此外&#xff0c;Node.js 具有能够异步 I/O 的事件驱动架构。它基于 Google Chrome 的 V8 引擎构建&#xff0c;用于开发I/O 密…