C语言 输入n个整数,求这个n个整数中的最大数,最小数
在 C 语言中,输入 n
个整数并找出其中的最大值和最小值是一个常见的编程任务。下面是详细的步骤和代码示例,帮助你完成这个任务:
步骤
- 输入整数个数
n
:首先从用户那里读取要处理的整数的数量。 - 动态分配内存:根据输入的
n
创建一个适当大小的数组来存储这些整数。 - 输入
n
个整数:将这些整数存入数组中。 - 计算最大值和最小值:遍历数组,找到最大值和最小值。
- 输出结果:打印最大值和最小值。
代码示例
以下是实现上述步骤的 C 语言代码:
c#include <stdio.h>
#include <limits.h> // 包含 INT_MAX 和 INT_MIN
int main() {
int n;
// 输入整数个数
printf("Enter the number of integers: ");
scanf("%d", &n);
// 检查输入的有效性
if (n <= 0) {
printf("The number of integers should be greater than 0.\n");
return 1;
}
// 动态分配内存来存储 n 个整数
int *numbers = (int *)malloc(n * sizeof(int));
if (numbers == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
// 输入 n 个整数
printf("Enter %d integers:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// 初始化最大值和最小值
int max = INT_MIN;
int min = INT_MAX;
// 计算最大值和最小值
for (int i = 0; i < n; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
if (numbers[i] < min) {
min = numbers[i];
}
}
// 输出最大值和最小值
printf("The maximum value is: %d\n", max);
printf("The minimum value is: %d\n", min);
// 释放分配的内存
free(numbers);
return 0;
}
详细说明
输入整数个数
cprintf("Enter the number of integers: "); scanf("%d", &n);
使用
scanf
函数从用户输入中读取整数n
,代表需要处理的整数数量。动态分配内存
cint *numbers = (int *)malloc(n * sizeof(int)); if (numbers == NULL) { printf("Memory allocation failed.\n"); return 1; }
使用
malloc
动态分配一个能够存储n
个整数的数组,并检查内存分配是否成功。如果分配失败,程序将输出错误信息并退出。输入
n
个整数cfor (int i = 0; i < n; i++) { scanf("%d", &numbers[i]); }
使用循环读取
n
个整数并存储到数组numbers
中。计算最大值和最小值
cint max = INT_MIN; int min = INT_MAX; for (int i = 0; i < n; i++) { if (numbers[i] > max) { max = numbers[i]; } if (numbers[i] < min) { min = numbers[i]; } }
使用初始化为
INT_MIN
和INT_MAX
的变量max
和min
来存储最大值和最小值。在遍历数组时,更新这两个变量以找到最终的最大值和最小值。输出结果
cprintf("The maximum value is: %d\n", max); printf("The minimum value is: %d\n", min);
使用
printf
函数打印最大值和最小值。释放内存
cfree(numbers);
使用
free
函数释放之前分配的内存,以避免内存泄漏。
总结
以上代码示例展示了如何在 C 语言中输入 n
个整数,并计算这些整数中的最大值和最小值。关键步骤包括动态分配内存、读取用户输入、遍历数组计算最大和最小值,并最终释放分配的内存。