c语言编写函数问题,要求如下

编写函数,对于给定的二维整型数组,首先对每行从小到大排序,之后对每列从小到大排序;反复执 行上述排序过程,直到没有变动为止。注:作为实参的二维整型数组,每行元素个数不低于 3 且每列 元素个数不低于 4。


#include<stdio.h>
#define row 4   //以四行三列为例
#define col 3
void  mysort(int a[row][col]) {
    int tmp;          //中间值,用于交换
    int key = 0;      //检测是否有变动
    while (key == 0) {
        key = 1;    //初始化为1
        for (int i = 0; i < row; i++) {     //行排序(冒泡)
            for (int j = 0; j < col; j++) {
                for (int k = j + 1; k < col; k++) {
                    if (a[i][j] > a[i][k]) {
                        key = 0;     //进行了交换,即有元素变动
                        tmp = a[i][j];
                        a[i][j] = a[i][k];
                        a[i][k] = tmp;
                    }
                }
            }
        }
        for (int i = 0; i < col; i++) {     //列排序(冒泡)
            for (int j = 0; j < row; j++) {
                for (int k = j + 1; k < row; k++) {
                    if (a[j][i] > a[k][i]) {
                        key = 0;    //同上
                        tmp = a[j][i];
                        a[j][i] = a[k][i];
                        a[k][i] = tmp;
                    }
                }
            }
        }
    }
}
int main() {
    int a[row][col] = { { 1,2,3 },{ 0,1,0 },{ 4,6,8 },{ 7,6,1 } };
    mysort(a);
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
/*
0 0 1
1 2 3
1 6 7
4 6 8
*/