输入1-99中的数字,并组合成最大的数

输入1-99中的数字,并组合成最大的数

例: 输入:9,46,42,4,45,输出:94645442
在这里插入图片描述
方法: 采用冒泡排序,两两比较。同为个位、同为十位直接比较。一个个位,一个十位则变成3位数比较大小。

例: 7与76等同于比较:7 x 100+76> 76 x 10+7
因为776>767所以不交换位置。

代码建议运行理解:
#include
using namespace std;
int main(){

int i,j,t;
int n;
int k=0;

cout<<"请指定数组大小:"<<endl; 
cin>>n;
int arr[n];
cout<<"请输入"<<n<<"个数字:"<<endl; 
//确认数组大小 

while(k<n){
	cin>>arr[k];
	k++;
}//输入数组	

for(i=0;i<n;i++){
	for(j=0;j<n-i;j++){
		
		if(arr[j]>=10 && arr[j+1]<10 || arr[j]<10 && arr[j+1]>=10){
		//如果一个是个位数一个是十位数 
			int x=10,y=10;
		//定义量级	 
			while(x <= arr[j])
			 x*=10;
			while(y <= arr[j+1]) 
			 y*=10;
		//将大于等于10的数对应的量级乘以10,
			
			if(arr[j]*y+arr[j+1] < arr[j+1]*x+arr[j]){
		//化成3位数比较大小,如果组合后 arr[j]arr[j+1] > arr[j+1]arr[j]	则不换,否则交换	
				t=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=t;	
			}
		}
			
		else if(arr[j]<arr[j+1]){
		//同为个位数,或者同为十位数比较 
			t=arr[j];
			arr[j]=arr[j+1];
			arr[j+1]=t;
		}
	}
}//两两比较并排序 

for(i=0;i<n;i++){
	cout<<arr[i];
}
return 0;	

}
图片好看一点:
在这里插入图片描述

如有问题请指正,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字测速系统设计 目 录 1. 设计任务及指标………………………………………………………………3 1.1设计任务………………………………………………………………………3 1.2设计要求………………………………………………………………………3 2. 数字测速电路设计………………………………………………………………3 2.1系统框图………………………………………………………………………3 2.2 二位码管计显示电路的设计……………………………………………4 2.3 锁存器电路的设计……………………………………………………………5 2.4 输入信号分频电路的设计……………………………………………………6 2.5 清零信号电路的设计…………………………………………………………8 2.6 报警功能电路的设计…………………………………………………………8 2.7整形电路设计…………………………………………………………………9 3.故障处理…………………………………………………………………………10 3.1故障一…………………………………………………………………………11 3.2故障二…………………………………………………………………………11 3.3故障三…………………………………………………………………………11 3.4故障四…………………………………………………………………………12 4. 实验据和误差分析……………………………………………………………13 5. 课程设计的收获、体会和建议…………………………………………………13 5.1收获及体会……………………………………………………………………13 5.2实验建议………………………………………………………………………13 6. 参考文献…………………………………………………………………………14 7. 附录………………………………………………………………………………15 附录A………………………………………………………………………………15 附录B………………………………………………………………………………15 1.设计任务及要求 1.1 设计任务 设计并制作测量电机转速的数字测速系统 1. 测量转速可达0—40转/秒; 2. 转速测量精度不得低于90度/秒; 3. 输出转速由码管显示; 4. 低速报警(速度低于设定值时,启动蜂鸣器报警,速度升高到设定值以上时,自动关闭 蜂鸣器)。 1.2 设计要求 1. 画出电路原理图(或仿真电路图); 2. 元器件及参选择; 3. 编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。 2. 数字测速系统电路设计 数字测速系统电路从原理上来说可分为几个部分:最基础的计显示功能,计的清 零锁存,输入信号的分频,报警功能电路的实现,清零信号的设计,以及波形的整形。 设计时必须一步一步来,逐步检查错误,逐步实现功能,最后再进行所有部分的组合设 计。 2.1系统框图: 图1 系统框图 2.2二位码管计显示电路的设计 选择CD4511作为显示译码电路;选择LED码管作为显示单元电路。由CD4511把输进 来的二进制信号翻译成十进制数字,再由码管显示出来。这里的LED码管是采用共阴 的方法连接的。 计器实现了对时间的累计并以8421BCD码的形式输送到CD4511芯片,再由4511芯片 把BCD码转变为七段码送到码管显示出来。 由于电机的转速达到二位,因此必须用二位十进制计显示。二位十进制计器, 就要有两组的计—译码—显示电路,低位向高位进位,是从低位QD端引出,接上高 位计输入端A,当低位的计溢出时,能够自动向高位进位,这样能实现的计 为0—99。 图2 二位码管显示电路 2.3 锁存器电路的设计 由于电机的转速比较快,则1秒内的脉冲比较多,而系统要求码管内即时显示电 机的转动速度,也就是1秒内产生的脉冲,所以设计的电路要求能在1秒内测速,然后 清零,并且保存这1秒内所测得的速度。这时就需要用到74LS373芯片。芯片的原理如下 : 当三态允许控制端 OE 为低电平时,O0~O7 为正常逻辑状态,可用来驱动负载或总 线。当 OE 为高电平时,O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,但 锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随据 D 而变。当 LE为低电平时,O被锁存在已建立的据电平。 D0—D7是输入端,O0—O7是输出端,分别连接74LS90计输入的信号和CD4511的输入 端,如下图所示: 图3锁存电路 2.4 输入信号分频电路的设计 因为我们的转盘设计的是四个孔,即当转盘转了一个圈时,输出的是4个方波信号, 而我们要的是在

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值