题目
从标准输入读入 n 个整数,使用指针遍历数组的方式找出其中的最大值并输出。
输入格式:第一行输入整数个数 n;第二行输入 n 个整数。
输出格式:输出一个整数,表示数组中的最大值,末尾换行。
数据范围与约定:1 ≤ n ≤ 1000。
思路与算法
1. 维护最大值指针
初始化最大值指针 int *best = a; 指向首元素。
2. 指针遍历与比对
遍历指针 for (int *p = a + 1; p < a + n; p++),若发现 *p > *best,则更新 best = p;。最终解引用 *best 即为最大值。
完整程序
#include <stdio.h>
int main(void)
{
int n, a[200];
if (scanf("%d", &n) != 1 || n < 1) {
return 1;
}
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 初始化最大值为首元素:*a 等价于 a[0]
int maxv = *a;
// 从第二个元素开始用指针遍历比较
for (int *p = a + 1; p < a + n; p++) {
if (*p > maxv) {
maxv = *p;
}
}
printf("%d\n", maxv);
return 0;
}运行示例
输入:
5
3 9 1 7 5输出:
9