C++蓝桥杯竞赛入门- 三个数字的排序

C++蓝桥杯竞赛入门- 三个数字的排序

编码文章call10242025-02-01 3:56:5013A+A-

程序控制结构(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;
}

程序说明:

  1. 包含必要的头文件:
  2. #include <iostream> 用于输入输出。
  3. #include <vector> 用于使用向量容器。
  4. #include <algorithm> 用于使用排序算法。
  5. 读取输入:
  6. 使用 std::cin 读取三个整数并存储在变量 a, b, c 中。
  7. 存储到向量中:
  8. 将这三个整数存储到一个 std::vector<int> 类型的向量 numbers 中。
  9. 排序:
  10. 使用 std::sort 函数对向量 numbers 进行排序。
  11. 输出:
  12. 使用一个循环遍历排序后的向量,并按要求格式输出每个整数,每个数字后面跟一个空格,最后一个数字后不加空格。

以上程序还可以使用最简单的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进行排序,这种方法可以自己试着写一下。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4