题目

从标准输入读入 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