c++一级 输入三个数,按照从小到大的顺序输出

这个题是2022年9月份c++一级的真题,它说难不难,说不难也难,评判标准主要看学生学到哪种程度以及

使用的是哪种方法。

首先来看用最基础的判断怎么做:

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a<=b && b<=c &&a<=c){
			cout<<a<<" "<<b<<" "<<c;
		}
	else if(a<=c && a<=b &&c<=b){
		cout<<a<<" "<<c<<" "<<b;
	}
	else if(b<=a && a<=c &&b<=c){
		cout<<b<<" "<<a<<" "<<c;
	}
	else if(b<=c && c<=a &&b<=a){
		cout<<b<<" "<<c<<" "<<a;
	}
	else if(c<=a && c<=b &&a<=b){
		cout<<c<<" "<<a<<" "<<b;
	}
	else if(c<=b && b<=a &&c<=a){
		cout<<c<<" "<<b<<" "<<a;
	}

	return 0;
}

这是用排列组合的方式来做,有的同学也会直接两两个数进行判断,但那样实在太麻烦了,需要写很多层循环嵌套。

这种题还有另外的出法就是三个数求最大值,它用的打擂台的思想,我们也可以使用这种思路来做这个题。

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
	int a,b,c,max=0,min=0,m=0;
	cin>>a>>b>>c;
	max=a;
	if(max<b){
		max=b;
	}
	if(max<c){
		max=c;
	}
	min=a;
	if(min>b){
		min=b;
	}
	if(min>c){
		min=c;
	}
	m=(a+b+c)-max-min;
	cout<<min<<" "<<m<<" "<<max;
	return 0;
}

刚刚这两种做法都是用一级的知识点做的,c++里有一个函数叫sort,是可以直接对数据容器里的数据进行排序,但这个我们需要借助一维数组(使用sort必须导入算法库或者万能头

cpp 复制代码
#include<algorithm>//算法库
#include<bits/stdc++.h>//万能头
using namespace std;
int main(){
	int a[3]={0};
	scanf("%d%d%d",&a[0],&a[1],&a[2]);
	sort(a,a+3);
	printf("%d %d %d",a[0],a[1],a[2]);
	return 0;
}

还要一种是交换值的方式,这一种就需要先简单说下它的原理了。

可以先想一下,如果现在有两瓶颜色不一样的水,我们怎样将它们进行交换呢?如果直接把一个杯子的水倒进另一个杯子,那水直接就会被覆盖掉。所以我们需要借助一个空杯子,比如A杯子和B杯子装的是颜色不一样的水,C杯子是空杯子,那我们只需要先把A杯子里的水倒进C杯子,这时A杯子的水空了就可以把B杯子的水倒进A杯子,然后再把C杯子装的A杯子的水再倒进B杯子了。(A -->C, B-->A, C-->A)

用编程来写就是:

cpp 复制代码
    int  a=5,b=2,c=0;
	c=a;
	a=b;
	b=c;

再回到这个题用这个思路来做的程序就是:

cpp 复制代码
#include<iostream>//算法库
using namespace std;
int main(){
  	int a, b, c, t;
     scanf("%d %d %d", &a, &b, &c);
     if (a < b)
     {
         t = a;
         a = b;
         b = t;
     }
     if (a < c)
     {
         t = a;
         a = c;
         c = t;
     }
     if (b < c)
     {
         t = b;
         b = c;
         c = t;
     }
     printf("%d %d %d", c, b, a);
	return 0;
}

好啦,同学们自己去试一试吧~

相关推荐
shirsl30 分钟前
算法 Day 2 滑动窗口 + 栈 / 单调栈
开发语言·python·算法
土司大王1 小时前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
2601_962218612 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
那年窗外下的雪.2 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
m0_734571762 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
wzdark3 小时前
基于启发式搜索的最优路径规划算法研究4
算法
l1t3 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
t-think3 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
a187927218313 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
cpp_learners3 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式