一个5x5的二维数组(内容自由输入) 1、找出数组中的最大值和最小值 2、查找数组中的元素,外部输入一个数,查找有无相同元素(或相同元素个数) 3、将所输入的二维数组,进行从大到小的顺序排列。
时间: 2024-10-24 09:03:28 浏览: 28
首先,我们来逐个解答这些问题:
1. 找出5x5二维数组中的最大值和最小值:
```c
#include <stdio.h>
int main() {
int arr[5][5]; // 假设用户已填充了这个5x5的数组
int max = arr[0][0], min = arr[0][0];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
if (arr[i][j] < min) {
min = arr[i][j];
}
}
}
printf("最大值: %d, 最小值: %d\n", max, min);
return 0;
}
```
2. 查找数组中的元素,外部输入一个数并检查是否存在于数组中:
```c
#include <stdbool.h>
bool searchElement(int num, int arr[][5]) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (arr[i][j] == num) {
return true;
}
}
}
return false;
}
int main() {
// 用户输入要查找的数值num
int num;
printf("请输入要查找的数: ");
scanf("%d", &num);
if (searchElement(num, arr)) {
printf("找到了该元素\n");
} else {
printf("未找到该元素\n");
}
return 0;
}
```
3. 将二维数组按降序排序:
由于不能直接对二维数组进行原地降序排列,我们可以先将其转换为一维数组,然后排序,最后再复制回二维数组。这里使用冒泡排序算法简化:
```c
void bubbleSort(int arr[5][5], int n) {
int temp, size = 5 * 5;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j / 5][j % 5] < arr[j + 1 / 5][j + 1 % 5]) {
temp = arr[j / 5][j % 5];
arr[j / 5][j % 5] = arr[j + 1 / 5][j + 1 % 5];
arr[j + 1 / 5][j + 1 % 5] = temp;
}
}
}
}
int main() {
// 先将二维数组转为一维,假设arr2[]是临时变量
int arr2[size];
// ... (根据数组的行和列复制数据)
bubbleSort(arr2, size); // 对一维数组进行降序排序
// ... (将排好序的一维数组复制回二维数组)
return 0;
}
```
阅读全文