C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字!!!

**不是下面:**输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、......数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。

输入:5 8 5 5 1 1 0 0(输入8个数:两个0,两个1,三个5,一个8)

输出:10015558

代码如下:

#include <stdio.h>

int main()

{

int a[100];

int b[10]={0};

char ch;

int j,i=0;

do

{

scanf("%d", &a[i]);

i++;

} while ((ch = getchar()) != '\n');

for (j = 0; j < i; j++){

switch(a[j]){

case 0:b[0]++;break;

case 1:b[1]++;break;

case 2:b[2]++;break;

case 3:b[3]++;break;

case 4:b[4]++;break;

case 5:b[5]++;break;

case 6:b[6]++;break;

case 7:b[7]++;break;

case 8:b[8]++;break;

case 9:b[9]++;break;

}

}

for(i=1;i<10;i++)

{

if(b[i]!=0)

{

printf("%d",i);

b[i]--;

break;

}

}

for(i=0;i<10;i++)

{

for(j=0;j<b[i];j++)

{

printf("%d",i);

}

}

return 0;

}

结果如下:

思路:

这道题目首先现将输入的内容放到一个数组里面,然后通过一个switch得到每一个数字出现的个数。然后根据这个个数找到不为0的第一个数字作为首位然后再从小到大输出即可。

相关推荐
Demonsong_几秒前
2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
经验分享·笔记
Warren9836 分钟前
如何在 Spring Boot 中安全读取账号密码等
java·开发语言·spring boot·后端·安全·面试·测试用例
燃尽了,可无1 小时前
C#基础编程核心知识点总结
开发语言·c#
Ldawn_AI2 小时前
4+ 图论高级算法
算法·深度优先·图论
Xの哲學2 小时前
Linux PCI 子系统:工作原理与实现机制深度分析
linux·网络·算法·架构·边缘计算
llrraa20102 小时前
python whisper生成字幕
开发语言·python·whisper
努力努力再努力wz2 小时前
【c++进阶系列】:万字详解多态
java·linux·运维·开发语言·c++
秦亿凡2 小时前
多线程下为什么用ConcurrentHashMap而不是HashMap
java·开发语言
阿波罗尼亚3 小时前
ExcelUtils实现 设置内容 插入行 复制行列格式
java·开发语言
NuyoahC3 小时前
笔试——Day46
c++·算法·笔试