如何用C语言编写一个程序,在给定的n行(每行n个整数)中分别找到每一行的最大值和最小值?
时间: 2024-09-24 09:05:59 浏览: 48
在C语言中,你可以使用嵌套循环来逐行读取整数并找出最大值和最小值。这里是一个简单的示例:
```c
#include <stdio.h>
// 函数声明
void find_max_min(int row[], int n, int* max, int* min);
int main() {
int n, i, j;
printf("请输入行数n: ");
scanf("%d", &n);
// 为每行的最大值和最小值分配内存
int max_values[n], min_values[n];
for (i = 0; i < n; i++) {
max_values[i] = INT_MIN; // 初始化为负无穷大
min_values[i] = INT_MAX; // 初始化为正无穷大
}
int input[n][n]; // 假设输入的数据是一维数组,实际应用需要根据实际情况调整
printf("请输入矩阵:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &input[i][j]);
// 更新行的最大值和最小值
if (input[i][j] > max_values[i]) {
max_values[i] = input[i][j];
}
if (input[i][j] < min_values[i]) {
min_values[i] = input[i][j];
}
}
}
printf("每行的最大值和最小值如下:\n");
for (i = 0; i < n; i++) {
printf("第%d行最大值: %d, 最小值: %d\n", i+1, max_values[i], min_values[i]);
}
return 0;
}
// 找到数组中的最大值和最小值
void find_max_min(int arr[], int len, int* max, int* min) {
*max = arr[0];
*min = arr[0];
for (int i = 1; i < len; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
if (arr[i] < *min) {
*min = arr[i];
}
}
}
```
这个程序首先从用户那里获取行数 `n`,然后创建两个数组 `max_values` 和 `min_values` 来存储每一行的最大值和最小值。接下来,它读取用户输入的二维数组,并在内部函数 `find_max_min` 中更新每一行的这两个值。最后,打印出每行的最大值和最小值。
阅读全文