C++蓝桥杯竞赛入门- 三个数字的排序
程序控制结构(if-else选择结构switch分支结构)
时间限制: 2s 内存限制: 192MB
题目描述
输入三个整数,按由小到大的顺序输出。
输入格式
三个整数
输出格式
由小到大输出成一行,每个数字后面跟一个空格
样例输入
2 3 1
样例输出
1 2 3
代码(1)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int a, b, c;
// 读取三个整数
cin >> a >> b >> c;
// 将整数存储到向量中
vector<int> numbers = {a, b, c};
// 对向量进行排序
sort(numbers.begin(), numbers.end());
// 按要求格式输出排序后的整数
for (size_t i = 0; i < numbers.size(); ++i) {
cout << numbers[i];
if (i < numbers.size() - 1) {
cout << " ";
}
}
cout << endl;
return 0;
}
程序说明:
- 包含必要的头文件:
- #include <iostream> 用于输入输出。
- #include <vector> 用于使用向量容器。
- #include <algorithm> 用于使用排序算法。
- 读取输入:
- 使用 std::cin 读取三个整数并存储在变量 a, b, c 中。
- 存储到向量中:
- 将这三个整数存储到一个 std::vector<int> 类型的向量 numbers 中。
- 排序:
- 使用 std::sort 函数对向量 numbers 进行排序。
- 输出:
- 使用一个循环遍历排序后的向量,并按要求格式输出每个整数,每个数字后面跟一个空格,最后一个数字后不加空格。
以上程序还可以使用最简单的IF来进行比较进行判断输出,代码(2)如下:
#include <iostream>
using namespace std;
int main() {
int a, b, c, temp;
// 读取三个整数
cin >> a >> b >> c;
// 使用简单的条件判断和临时变量进行排序
if (a > b) {
temp = a;
a = b;
b = temp;
}
if (a > c) {
temp = a;
a = c;
if (b > temp) {
// 注意这里要检查b和temp的大小,因为a已经和c交换了
c = b;
b = temp;
} else {
c = temp;
}
} else if (b > c) { // 如果a不大于c,则需要检查b和c
temp = b;
b = c;
c = temp;
}
// 按要求格式输出排序后的整数
cout << a << " " << b << " " << c << endl;
return 0;
}
- 1)在第二个 if (a > c) 条件块中,当 a 和 c 交换后,我们需要检查 b 和临时变量 temp(原来是 a 的值)的大小,因为 a 现在已经是 c 的值了。如果 b 大于 temp,则 b 和 c(现在的 a)也需要交换,同时 c 变为原来的 b 和 a 交换后的值(即 temp)。否则,只需要将 c 更新为 temp。
- 2)第三个 else if (b > c) 条件块是为了处理在 a 不大于 c 的情况下,b 和 c 可能需要交换的情况。
以上程序还可以使用swap进行排序,这种方法可以自己试着写一下。
下一篇:常用排序算法:冒泡排序,快速排序