二维数组
来源:

慕斯1141686
2024-11-07
定义一个N*M的二维数组,数组的值用随机函数产生,范围是1-100,输出该数组中满足“该行最大,该列最小”的数,并输出该数的位置。用C语言实现
写回答
2回答
-
bennyhuo
2024-12-03
考虑到同学的题目就是常规程序题目,AI往往更加擅长回答此类问题。
以下答案由腾讯元宝AI生成,希望对同学有帮助。
以下是一个用C语言实现的程序,它定义了一个N*M的二维数组,数组的值用随机函数产生,范围是1-100,并输出满足“该行最大,该列最小”的数及其位置。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 3
#define M 4
// 生成随机数
int random_number(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 找到某行的最大值及其列索引
void find_max_in_row(int row[N], int *max_value, int *max_index) {
*max_value = row[0];
*max_index = 0;
for (int j = 1; j < M; j++) {
if (row[j] > *max_value) {
*max_value = row[j];
*max_index = j;
}
}
}
// 找到某列的最小值及其行索引
void find_min_in_col(int array[N][M], int col, int *min_value, int *min_index) {
*min_value = array[0][col];
*min_index = 0;
for (int i = 1; i < N; i++) {
if (array[i][col] < *min_value) {
*min_value = array[i][col];
*min_index = i;
}
}
}
int main() {
int array[N][M];
srand(time(NULL)); // 初始化随机数种子
// 生成随机数组
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
array[i][j] = random_number(1, 100);
}
}
// 打印数组
printf("Generated Array:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
printf("%4d", array[i][j]);
}
printf("\n");
}
// 查找满足条件的数及其位置
for (int i = 0; i < N; i++) {
int max_value, max_index;
find_max_in_row(array[i], &max_value, &max_index);
int min_value, min_index;
find_min_in_col(array, max_index, &min_value, &min_index);
if (max_value == min_value && i == min_index) {
printf("Number %d at position (%d, %d) satisfies the condition.\n", max_value, i, max_index);
}
}
return 0;
}
```
### 解释
1. **随机数生成**:使用`random_number`函数生成1到100之间的随机数。
2. **数组初始化**:使用嵌套循环初始化二维数组`array`。
3. **打印数组**:打印生成的二维数组。
4. **查找满足条件的数**:
- `find_max_in_row`函数找到某行的最大值及其列索引。
- `find_min_in_col`函数找到某列的最小值及其行索引。
- 遍历每一行,找到该行的最大值及其列索引,然后检查该列的最小值是否等于该行的最大值,并且位置相同。
### 注意事项
- 确保`N`和`M`的值在编译时定义好。
- 该程序假设`N`和`M`的值不会太大,以免影响性能。00 -
bennyhuo
2024-12-03
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 3
#define M 4
// 生成随机数
int random_number(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 找到某行的最大值及其列索引
void find_max_in_row(int row[N], int *max_value, int *max_index) {
*max_value = row[0];
*max_index = 0;
for (int j = 1; j < M; j++) {
if (row[j] > *max_value) {
*max_value = row[j];
*max_index = j;
}
}
}
// 找到某列的最小值及其行索引
void find_min_in_col(int array[N][M], int col, int *min_value, int *min_index) {
*min_value = array[0][col];
*min_index = 0;
for (int i = 1; i < N; i++) {
if (array[i][col] < *min_value) {
*min_value = array[i][col];
*min_index = i;
}
}
}
int main() {
int array[N][M];
srand(time(NULL)); // 初始化随机数种子
// 生成随机数组
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
array[i][j] = random_number(1, 100);
}
}
// 打印数组
printf("Generated Array:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
printf("%4d", array[i][j]);
}
printf("\n");
}
// 查找满足条件的数及其位置
for (int i = 0; i < N; i++) {
int max_value, max_index;
find_max_in_row(array[i], &max_value, &max_index);
int min_value, min_index;
find_min_in_col(array, max_index, &min_value, &min_index);
if (max_value == min_value && i == min_index) {
printf("Number %d at position (%d, %d) satisfies the condition.\n", max_value, i, max_index);
}
}
return 0;
}00
相似问题