三体·六分仪 2025-04-19 14:45 采纳率: 100%
浏览 5
已结题

三数排序(函数解题)c++

题目描述
输入三个整型数字a,b,c,通过比较和交换使得最终有a≤b≤c,并依次输出a,b,c的值。

输入格式
输入三个整型数字a,b,c,空格隔开。

输出格式
交换后的a,b,c三个数的值,空格隔开。

输入样例
3 2 1

输出样例
1 2 3

提示/说明
经过最多三次比较交换就可完成排序。

下方是小T未完成的程序,请在此基础上将程序补充完整。

#include <iostream>
using namespace std;

void pai_3(____a,____b,____c){

  
}

int main(){
    int a,b,c;
    cin >> a >> b >> c;
    pai_3(a,b,c);
    cout << a << " " << b << " " << c;
    return 0;
}

  • 写回答

4条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-19 14:50
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    三数排序(函数解题)C++ 解答

    根据题目要求,我们需要完成一个函数pai_3,通过比较和交换使得三个整数按升序排列。由于题目提示最多只需要三次比较交换,我们可以采用简单的冒泡排序思想来实现。

    以下是完整的解决方案:

    #include <iostream>
    using namespace std;
    
    void pai_3(int &a, int &b, int &c) {
        // 第一次比较交换:确保a <= b
        if (a > b) {
            swap(a, b);
        }
        // 第二次比较交换:确保a <= c
        if (a > c) {
            swap(a, c);
        }
        // 第三次比较交换:确保b <= c
        if (b > c) {
            swap(b, c);
        }
    }
    
    int main() {
        int a, b, c;
        cin >> a >> b >> c;
        pai_3(a, b, c);
        cout << a << " " << b << " " << c;
        return 0;
    }
    

    代码说明

    1. 函数参数使用引用传递(int &),这样可以直接修改传入的变量值
    2. 通过三次比较交换确保:
      • 第一次比较使a和b有序
      • 第二次比较使a和c有序(此时a是最小值)
      • 第三次比较使b和c有序
    3. 使用标准库的swap函数来交换两个变量的值

    示例运行

    输入:

    3 2 1
    

    输出:

    1 2 3
    

    这个解决方案完全符合题目要求,通过最多三次比较交换完成排序,并且保持了原程序的结构。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日