三数论大小(指针)

时间限制: 1 Sec 内存限制: 128 MB

题目描述

输入三个整数,然后按照从大到小的顺序输出数值。
要求:用三个指针分别指向这三个整数,排序过程必须通过这三个指针来操作,不能直接访问这三个整数
输出时,必须使用这三个指针,不能使用存储三个整数的变量

输入

第一行输入t表示有t个测试实例
第二行起,每行输入三个整数
输入t行

输出

每行按照从大到小的顺序输出每个实例
在每行中,每个数据输出后都带有一个空格,即使该行最后一个数据输出后也要再输出一个空格

样例输入

3
2 4 6
88 99 77
111 333 222

样例输出

6 4 2 
99 88 77 
333 222 111 

提示

解决方案

#include <iostream>
#include <algorithm>

const size_t ARRAY_SIZE = 3;

int main() {
    unsigned int T;
    std::cin >> T;
    while (T--) {
        int integer_array[ARRAY_SIZE]{}, *integer_ptr_array[ARRAY_SIZE]{};
        for (size_t i = 0; i < ARRAY_SIZE; ++i) {
            std::cin >> integer_array[i];
            integer_ptr_array[i] = integer_array + i;
        }
        for (size_t i1 = 0; i1 < (ARRAY_SIZE - 1); ++i1) {
            for (size_t i2 = 0; i2 < (ARRAY_SIZE - i1 - 1); ++i2) {
                if (*integer_ptr_array[i2] < *integer_ptr_array[i2 + 1]) {
                    // swap pointers
                    auto tmp_ptr = integer_ptr_array[i2];
                    integer_ptr_array[i2] = integer_ptr_array[i2 + 1];
                    integer_ptr_array[i2 + 1] = tmp_ptr;
                }
            }
        }
        for (auto item : integer_ptr_array) {
            std::cout << *item << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据