c语言已知一个5×5矩阵,用函数实现:(1)找出该矩阵中的鞍点,“鞍点”指的是一个位置,该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。(2)将矩阵中最大的元素放在中心,四个角分别放四个最小的元素。说明:将矩阵中最大的元素放在中心,四个角分别放四个最小的元素,也就是按从左到右,从上到下顺序依次从小到大存放,即:最小元素与a[0][0]交换,第二小元素与a[0][4]交换,第三小元素与a[4][0]交换,第四小元素与a[4][4]交换,最大元素与a[2][2]交换。
时间: 2023-05-24 08:02:13 浏览: 82
2,rsac语言源码库,c语言程序
以下是解答:
1. 找出鞍点的函数代码如下:
```c
void find_saddle_point(int a[5][5]) {
int i, j, k, flag;
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
flag = 1;
for (k = 0; k < 5; k++) {
if (a[i][j] < a[i][k]) {
flag = 0;
break;
}
}
if (flag) {
for (k = 0; k < 5; k++) {
if (a[i][j] > a[k][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("鞍点: a[%d][%d] = %d\n", i, j, a[i][j]);
return;
}
}
}
printf("没有鞍点。\n");
}
```
2. 将矩阵中最大的元素放在中心,四个角分别放四个最小的元素的代码如下:
```c
void sort_min_max(int a[5][5]) {
int i, j, tmp;
for (i = 0; i < 5; i++) {
for (j = i+1; j < 5; j++) {
if (a[i/5][i%5] > a[j/5][j%5]) {
tmp = a[i/5][i%5];
a[i/5][i%5] = a[j/5][j%5];
a[j/5][j%5] = tmp;
}
}
}
for (i = 0; i < 5; i++) {
for (j = i+1; j < 5; j++) {
if (a[2][2] < a[i/5][i%5]) {
tmp = a[2][2];
a[2][2] = a[i/5][i%5];
a[i/5][i%5] = tmp;
}
if (a[0][0] > a[i/5][i%5]) {
tmp = a[0][0];
a[0][0] = a[i/5][i%5];
a[i/5][i%5] = tmp;
}
if (a[0][4] > a[i/5][i%5]) {
tmp = a[0][4];
a[0][4] = a[i/5][i%5];
a[i/5][i%5] = tmp;
}
if (a[4][0] > a[i/5][i%5]) {
tmp = a[4][0];
a[4][0] = a[i/5][i%5];
a[i/5][i%5] = tmp;
}
if (a[4][4] > a[i/5][i%5]) {
tmp = a[4][4];
a[4][4] = a[i/5][i%5];
a[i/5][i%5] = tmp;
}
}
}
printf("处理后的矩阵:\n");
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
}
```
希望我的回答对您有所帮助。
阅读全文