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;
}

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

相关推荐
铅笔小新z18 分钟前
【C++】从理论到实践:类和对象完全指南(上)
开发语言·c++
kyle~30 分钟前
算法---贪心算法(Greedy Algorithm)
算法·贪心算法
fashion 道格34 分钟前
C 语言数组拼接:从基础实现到细节优化
算法
go_bai39 分钟前
Linux-线程
linux·开发语言·c++·经验分享·笔记
代码AC不AC1 小时前
【C++】智能指针
c++·智能指针
zzzsde1 小时前
【C++】二叉搜索树
开发语言·c++
头发还没掉光光1 小时前
Linux多线程之自旋锁与读写锁
linux·运维·算法
fashion 道格1 小时前
C 语言希尔排序:原理、实现与性能深度解析
数据结构·算法·排序算法
无限进步_1 小时前
C语言atoi函数实现详解:从基础到优化
c语言·开发语言·c++·git·后端·github·visual studio
AA陈超1 小时前
ASC学习笔记0022:在不打算修改属性集时访问生成的属性集
c++·笔记·学习·ue5·虚幻引擎·unreal engine