c++编制函数使用指针把二维数组排序

img

img


c++编制函数使用指针把二维数组排序,不知道该怎么结合函数与指针

你的代码的问题是,当二维数组作为一维数组的时候,元素不是连续存放的,即3个元素之后的97个元素都是随机数,然后才是下一行
而你排序的是前面这6个数字

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7665173
  • 你也可以参考下这篇文章:【C++】函数如何传递二维数组?二维数组是怎么通过指针进行传递?
  • 除此之外, 这篇博客: C++矩阵类中的运算符重载和二维数组动态申请内存中的 C++矩阵类中的运算符重载和二维数组动态申请内存 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    学校的题

    3、矩阵(三)
    编写C++程序完成以下功能:
    (1)用类来实现矩阵,定义一个矩阵的类,属性包括:
    1.矩阵大小,用 lines, rows(行、列来表示);
    2.存贮矩阵的数组指针,根据矩阵大小动态申请(new)。
    (2)矩阵类的方法包括:
    1.构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组;
    2.析构函数,需要释放矩阵的数组指针;
    3.拷贝构造函数,需要申请和复制数组;
    4.输入,可以从cin中输入矩阵元素;
    5.输出,将矩阵格式化输出到cout;
    6.矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵类,但必须矩阵大小相同;
    7.矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。

  • 您还可以看一下 张景平老师的C++零基础入门(计算机二级考试)课程中的 变量赋值与变量初始化小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以提供一个使用指针实现二维数组排序的简单示例代码:

    #include <iostream>
    using namespace std;
    
    void sort2DArray(int **arr, int rows, int cols) {
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                // 冒泡排序
                for (int k = 0; k < cols - j - 1; k++) {
                    if (arr[i][k] > arr[i][k+1]) {
                        // 交换元素
                        int temp = arr[i][k];
                        arr[i][k] = arr[i][k+1];
                        arr[i][k+1] = temp;
                    }
                }
            }
        }
    }
    
    int main() {
        int **arr; // 声明一个指向指针的指针,表示二维数组
        int rows, cols;
        cout << "请输入二维数组的行数和列数:" << endl;
        cin >> rows >> cols;
    
        // 动态申请二维数组内存
        arr = new int *[rows];
        for (int i = 0; i < rows; i++) {
            arr[i] = new int[cols];
        }
    
        // 输入二维数组的值
        cout << "请输入二维数组的值:" << endl;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                cin >> arr[i][j];
            }
        }
    
        // 排序
        sort2DArray(arr, rows, cols);
    
        // 输出排序后的二维数组
        cout << "排序后的二维数组为:" << endl;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
    
        // 释放内存
        for (int i = 0; i < rows; i++) {
            delete[] arr[i];
        }
        delete[] arr;
    
        return 0;
    }
    

    在这个示例中,首先我们通过动态申请内存来创建一个二维数组,然后输入数据并调用一个名为sort2DArray的函数来排序这个数组。注意,在函数中使用指针可以访问二维数组的值。最后,我们也必须在程序终止前释放所使用的内存,以免造成内存泄漏。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^