手指舞蹈
2018-10-23 14:56
采纳率: 50%
浏览 1.2k
已采纳

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • Italink 2018-10-23 15:17
    已采纳
    
    #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
    */
    
    
    打赏 评论

相关推荐 更多相似问题