方法1:使用循环遍历数组
这是最直接的方法,适用于任何大小的数组。
代码示例
#include <stdio.h>
int main() {
int arr[] = {12, 45, 7, 23, 56, 9, 34};
int size = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
if (size == 0) {
printf("数组为空!\n");
return 0;
}
int max = arr[0]; // 假设第一个元素是最大值
int min = arr[0]; // 假设第一个元素是最小值
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i]; // 更新最大值
}
if (arr[i] < min) {
min = arr[i]; // 更新最小值
}
}
printf("最大值: %d\n", max);
printf("最小值: %d\n", min);
return 0;
}
输出
最大值: 56
最小值: 7
方法2:使用指针遍历数组
如果不想用数组下标,可以用指针遍历数组。
代码示例
#include <stdio.h>
int main() {
int arr[] = {12, 45, 7, 23, 56, 9, 34};
int size = sizeof(arr) / sizeof(arr[0]);
if (size == 0) {
printf("数组为空!\n");
return 0;
}
int *ptr = arr;
int max = *ptr;
int min = *ptr;
for (int i = 1; i < size; i++) {
ptr++;
if (*ptr > max) {
max = *ptr;
}
if (*ptr < min) {
min = *ptr;
}
}
printf("最大值: %d\n", max);
printf("最小值: %d\n", min);
return 0;
}
输出
最大值: 56
最小值: 7
方法3:使用 scanf 动态输入数组
如果数组元素需要用户输入,可以使用 scanf 动态读取。
代码示例
#include <stdio.h>
int main() {
int n;
printf("请输入数组的大小: ");
scanf("%d", &n);
if (n <= 0) {
printf("数组大小必须大于0!\n");
return 0;
}
int arr[n];
printf("请输入 %d 个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int max = arr[0];
int min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("最大值: %d\n", max);
printf("最小值: %d\n", min);
return 0;
}
运行示例
请输入数组的大小: 5
请输入 5 个整数:
10 20 30 40 50
最大值: 50
最小值: 10
方法4:使用函数封装(推荐)
如果代码需要复用,可以把找最大值和最小值的逻辑封装成函数。
代码示例
#include <stdio.h>
void findMinMax(int arr[], int size, int *max, int *min) {
*max = arr[0];
*min = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > *max) {
*max = arr[i];
}
if (arr[i] < *min) {
*min = arr[i];
}
}
}
int main() {
int arr[] = {12, 45, 7, 23, 56, 9, 34};
int size = sizeof(arr) / sizeof(arr[0]);
if (size == 0) {
printf("数组为空!\n");
return 0;
}
int max, min;
findMinMax(arr, size, &max, &min);
printf("最大值: %d\n", max);
printf("最小值: %d\n", min);
return 0;
}
输出
最大值: 56
最小值: 7
| 方法 | 适用场景 | 特点 |
|---|---|---|
| 循环遍历 | 静态数组 | 最简单,直接遍历 |
| 指针遍历 | 指针操作 | 适合指针爱好者 |
| 动态输入 | 用户输入 | 灵活,可交互 |
| 函数封装 | 代码复用 | 结构化,推荐 |
选择合适的方法取决于你的需求,如果是简单程序,方法1 最直接;如果需要复用逻辑,方法4 更合适。
