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

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

相关推荐
儿创社ErChaungClub13 分钟前
解锁编程新境界:GitHub Copilot 让效率翻倍
人工智能·算法
前端西瓜哥18 分钟前
贝塞尔曲线算法:求贝塞尔曲线和直线的交点
前端·算法
小灰灰爱代码25 分钟前
C++——求3个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数模板来实现。
开发语言·c++·算法
南加第一划水29 分钟前
Leetcode 每日一题:Evaluate Division
算法·leetcode·职场和发展
逝去的秋风1 小时前
【代码随想录训练营第42期 Day61打卡 - 图论Part11 - Floyd 算法与A * 算法
算法·图论·floyd 算法·a -star算法
zero_one_Machel1 小时前
leetcode73矩阵置零
算法·leetcode·矩阵
BeyondESH2 小时前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
青椒大仙KI112 小时前
24/9/19 算法笔记 kaggle BankChurn数据分类
笔记·算法·分类
^^为欢几何^^2 小时前
lodash中_.difference如何过滤数组
javascript·数据结构·算法
豆浩宇2 小时前
Halcon OCR检测 免训练版
c++·人工智能·opencv·算法·计算机视觉·ocr