c语言写一个给定一个二维数组a[3][4],定义一个函数,实现数组元素的交换,实现将二维数组的最大值放置在右上角
时间: 2025-06-09 14:04:36 浏览: 11
在C语言中,你可以定义一个函数`swapMaxToCorner`来完成这个任务。首先,你需要遍历整个二维数组,找到最大值及其位置。然后,利用临时变量和数组下标操作,将最大值移动到a[2][3]的位置。以下是一个简单的示例:
```c
#include <stdio.h>
// 定义数组大小
#define ROWS 3
#define COLS 4
void swapMaxToCorner(int a[ROWS][COLS]) {
int max_val = a[0][0]; // 初始化最大值为第一行第一列的元素
int row_max, col_max; // 存储最大值所在行和列
row_max = col_max = 0;
// 遍历寻找最大值
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
if (a[i][j] > max_val) { // 如果当前元素大于已知最大值
max_val = a[i][j];
row_max = i;
col_max = j;
}
}
}
// 将最大值与右上角的元素交换
int temp = a[row_max][col_max]; // 保存右上角的元素
a[row_max][col_max] = max_val;
a[2][3] = temp;
}
// 测试函数
int main() {
int arr[ROWS][COLS] = {
{5, 9, 3, 7},
{8, 6, 2, 4},
{1, 0, 10, 11}
};
printf("Before swapping:\n");
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
swapMaxToCorner(arr);
printf("After swapping:\n");
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文