|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
将一个5x5矩阵中最大的元素放在中心, 四个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大排序), 写一个函数实现之,用main函数
例如:输入:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
输出:
1 5 6 7 2
8 9 10 11 12
13 14 25 15 16
17 18 19 20 21
3 22 23 24 4
本帖最后由 风过无痕1989 于 2021-1-2 21:19 编辑
- #include <stdio.h>
- int main()
- {
- int sort(int *p, int n);
- int a[5][5];
- int b[25];
- 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[i][j]);
- b[k] = a[i][j];
- k++;
- }
- }
- sort(b, k);
- printf("\n");
- temp1 = b[1];
- temp2 = b[2];
- temp3 = b[3];
- temp4 = b[24];
- for (j = 1; j < 4; j++) // 处理第 0 行
- {
- b[j] = b[j + 3];
- }
- b[4] = temp1;
- for (j = 5; j < 12; j++) // 处理第 1 行及第 2 行前半
- {
- b[j] = b[j + 2];
- }
- b[12] = temp4;
- for (j = 13; j < 20; j++) // 处理第 2 行后半第 3 行
- {
- b[j] = b[j + 2];
- }
- b[20] = temp2;
- for (j = 21; j < 24; j++) // 处理第 4 行
- {
- b[j] = b[j + 1];
- }
- b[24] = temp3;
- k = 0;
- for (i = 0; i < 5; i++) // 一维数组转二维数组
- {
- for (int j = 0; j < 5; j++)
- {
- a[i][j] = b[k];
- k++;
- }
- }
- for (i = 0; i < 5; i++) // 输出数组
- {
- for (j = 0; j < 5; j++)
- {
- printf("%2d ", a[i][j]);
- }
- 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;
- }
复制代码
|
|