首页 > 其他分享 >【C语言】拆数字组成最大数

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

时间:2024-12-17 21:57:35浏览次数:10  
标签:排序 数字 最大数 int qsort C语言 char include 函数

相信你是最棒哒!!!

文章目录

题目描述

正确代码

法一注释版

简洁版

法二注释版

简洁版


题目描述

任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 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值进行比较,从而实现字符的升序排序。

标签:排序,数字,最大数,int,qsort,C语言,char,include,函数
From: https://blog.csdn.net/2401_88601421/article/details/144459001

相关文章

  • 【C语言】百钱百鸡问题
    相信你是最棒哒!!!文章目录题目描述正确代码注释版简洁版总结题目描述中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?无输入输出描述给出所有的解,每组解占一行解的顺......
  • C语言基础-字符数组与字符串
    字符数组概念元素类型为char字符型的数组,字符数组往往是用来存储字符串数据的。C语言中,字符是字节字符。字节字符:一个字符占一个字节,在C语言中,使用char表示字节chara='A';charb='1';charc=65;//以上都是正确的chard="A";chare='司';//以上都是错......
  • C语言<2>
    1.if语句如果......则......,否则,则......;用if语句。形式:if(表达式1){语句1;}elseif(表达式2){语句2;}else{语句3;}[注]if、elseif、else三个语句后都没有;当if、elseif、else中仅有一个语句时{}可以省略。[例]有一个函数:当x<1时,y=x;当1<=......
  • C语言<1>
    1.固定格式#include<stdio.h>intmain(){return0;}[注]:以上内容都要以英文格式输入。2.printf语句功能:输出内容。形式:printf("");        [注]:1.全英文,引号内内容可以是中文、英文、符号。        2.可以是一个也可以是多个。[例]在屏幕上输......
  • rust可以和C语言程序使用grpc进行通信吗? rust是客户端,C是服务端。 如果可以的话,举一个
    是的,Rust可以与C语言程序通过gRPC进行通信。gRPC是一个语言中立的通信框架,支持多种语言之间的互操作,包括Rust和C。关键步骤概述:定义gRPC接口(.proto文件):定义服务端和客户端之间的接口。C服务端实现:使用C语言实现服务端,处理客户端的请求。Rust客户端实现:使......
  • 掌握高效能计算(HPC):企业数字化转型的核心
    掌握高效能计算(HPC):企业数字化转型的核心引言在当今快速发展的科技时代,企业面临着前所未有的挑战和机遇。随着数据量的爆炸式增长、复杂业务需求的增加以及对实时分析能力的需求提升,企业需要寻求更高效、更智能的方式来处理这些挑战。其中,高效能计算(HighPerformanceComputing,......
  • c语言链表头插法再汇总
    建议回顾c链表一系列操作(主要是尾插法)c链表头插法遍历函数在这里先把尾插法的遍历函数稍作修改拿过来。voidForeach(NODE*h){if(NULL==h){return;}//辅助指针变量(帽子)NODE*pC=h;//这里改动是因为没有第一个空节点了......
  • c++领域展开第四幕——类和对象(上篇收尾 this指针、c++和c语言的初步对比)超详细!!!!
    文章目录前言一、this指针二、c++和c语言的初步对比总结前言上篇我们初步学习了类的基本概念以及实例化今天我们来学习类的构造以及析构还有类的默认成员函数,类和对象这一部分都会有点难跟着我一起来吧一、this指针Date类中有Init与Print两个成员函数,函......
  • java poi 限定单元格只能输入数字
    importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.ss.util.*;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;publicclassEasyPoiNumberValidation{publicstaticvoidmain(String[]args){Workbookworkbook=newXSSFWorkbook();......
  • 初探C语言|用C语言实现扫雷游戏的底层逻辑
    文章目录前言游戏规则理清思路代码实现主函数代码test()menue()game()游戏代码初始化棋盘打印棋盘布置雷排查雷+判断输赢完整代码测试test.c封装头文件game.h封装函数game.c拓展实现:欢迎讨论:如有错误或不足,欢迎指正和建议,本人主打“听劝”。当然,如有疑问,也期待你......