将一个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 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]