用简单的c语言写随机生成一个5X5的矩阵,将其中最大的数放在中心,4个角分别放4个最小的元素,(顺序为从左到右,从上到下依次从小到大存放),写一个函数实现并用主函数调用。
时间: 2024-10-23 13:20:48 浏览: 26
腾讯X5内核浏览器类库_浏览器_x5内核_e4a类库_x5内核_E4A_
5星 · 资源好评率100%
在C语言中,我们可以使用数组和循环结构来实现这个需求。首先,我们需要定义一个函数`randomMatrix()`来创建并填充矩阵,然后通过另一个辅助函数`placeMaxAndMin()`来排列元素。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义矩阵大小
#define ROWS 5
#define COLS 5
// 随机生成0到9之间的整数
int random(int max) {
return (rand() % max);
}
// 生成并返回一个随机矩阵
void generateMatrix(int matrix[ROWS][COLS]) {
srand(time(0)); // 初始化随机种子
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
matrix[i][j] = random(10); // 假设范围为0到9
}
}
}
// 将最大值放在中心,四个角落放最小值
void placeMaxAndMin(int matrix[ROWS][COLS]) {
int minVal = matrix[0][0];
int maxVal = matrix[0][0];
// 找到矩阵中的最大值和最小值
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (matrix[i][j] > maxVal) {
maxVal = matrix[i][j];
} else if (matrix[i][j] < minVal) {
minVal = matrix[i][j];
}
}
}
// 将最大值放在中心
int centerRow = ROWS / 2;
int centerCol = COLS / 2;
matrix[centerRow][centerCol] = maxVal;
// 将四个角的位置初始化为最小值
matrix[0][0] = minVal;
matrix[0][COLS - 1] = minVal;
matrix[ROWS - 1][0] = minVal;
matrix[ROWS - 1][COLS - 1] = minVal;
// 然后遍历矩阵,按照从左到右、从上到下的顺序调整剩余位置的元素
for (int i = 1; i < centerRow; i++) {
for (int j = 0; j <= centerCol; j++) {
matrix[i][j] = min(matrix[i - 1][j], matrix[i][j + 1]);
}
}
for (int i = centerRow + 1; i < ROWS - 1; i++) {
for (int j = 0; j <= centerCol; j++) {
matrix[i][j] = min(matrix[i + 1][j], matrix[i][j + 1]);
}
}
for (int i = 0; i <= centerRow; i++) {
for (int j = centerCol + 1; j < COLS - 1; j++) {
matrix[i][j] = min(matrix[i + 1][j], matrix[i][j - 1]);
}
}
for (int i = centerRow + 1; i < ROWS - 1; i++) {
for (int j = centerCol + 1; j < COLS - 1; j++) {
matrix[i][j] = min(matrix[i + 1][j], matrix[i][j - 1]);
}
}
}
// 主函数
int main() {
int matrix[ROWS][COLS];
// 生成矩阵
generateMatrix(matrix);
// 放置最大值和最小值
placeMaxAndMin(matrix);
// 输出矩阵
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文