乐乐学编程 发表于 2021-1-2 14:32:29

将一个5x5矩阵重排列

将一个5x5矩阵中最大的元素放在中心, 四个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大排序), 写一个函数实现之,用main函数

例如:输入:
12   3   45
6   7   8   9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
输出:
1   5   67   2
8   9 10 11 12
13 14 25 15 16
17 18 19 20 21
3 22 23 244

风过无痕1989 发表于 2021-1-2 14:45:13

本帖最后由 风过无痕1989 于 2021-1-2 21:19 编辑

#include <stdio.h>
int main()
{
        int sort(int *p, int n);
        int a;
        int b;
        int i, j, k = 0;
        int temp1, temp2, temp3, temp4;
        printf("请输入数组元素:\n");
        for (i = 0; i < 5; i++)
        {
                for (j = 0; j < 5; j++)
                {
                        scanf_s("%d", &a);
                        b = a;
                        k++;
                }
        }

        sort(b, k);

        printf("\n");

        temp1 = b;
        temp2 = b;
        temp3 = b;
        temp4 = b;

        for (j = 1; j < 4; j++)    // 处理第 0 行
        {
                b = b;
        }
        b = temp1;

        for (j = 5; j < 12; j++)   // 处理第 1 行及第 2 行前半
        {
                b = b;
        }
        b = temp4;

        for (j = 13; j < 20; j++)   // 处理第 2 行后半第 3 行
        {
                b = b;
        }
        b = temp2;

        for (j = 21; j < 24; j++)   // 处理第 4 行
        {
                b = b;
        }
        b = temp3;

        k = 0;
        for (i = 0; i < 5; i++)    // 一维数组转二维数组
        {
                for (int j = 0; j < 5; j++)
                {
                        a = b;
                        k++;
                }
        }

        for (i = 0; i < 5; i++)    // 输出数组
        {
                for (j = 0; j < 5; j++)
                {
                        printf("%2d ", a);
                }
                printf("\n");
        }
        return 0;
}

int sort(int *p, int n)            // 对一维数 b 组排序
{
        int i, j, temp;
        for (i = 0;i < n;i++)
        {
                for (j = 0;j < n - 1;j++)
                {
                        if (*(p + j) > *(p + j + 1))
                        {
                                temp = *(p + j);
                                *(p + j) = *(p + j + 1);
                                *(p + j + 1) = temp;
                        }
                }
        }
        return 0;
}
页: [1]
查看完整版本: 将一个5x5矩阵重排列