题目

从标准输入读入 n 个整数存入数组,使用指针移动(指针自增 *p++)的方式遍历数组并依次打印各元素。

输入格式:第一行输入整数个数 n;第二行输入 n 个整数。

输出格式:在一行中输出所有数组元素,每个数字后跟空格,末尾换行。

数据范围与约定:1 ≤ n ≤ 200。

思路与算法

1. 数组名与指针退化
在 C 语言中,数组名 a 在表达式中会自动退化为指向首元素的指针 &a[0]。

2. 指针算术运算
声明指针 int *p = a;,指针循环终止边界为 p < a + n。每次循环打印 *p 并递增 p++,移动步长由类型 sizeof(int) 决定。

完整程序

#include <stdio.h>

int main(void)
{
    int n, a[200];
    if (scanf("%d", &n) != 1 || n < 1 || n > 200) {
        return 1;
    }
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 指针步进遍历:p 从数组首地址 a 开始,每轮自增步进 1 个 int 大小
    for (int *p = a; p < a + n; p++) {
        // 解引用 *p 获取当前内存位置的值
        printf("%d ", *p);
    }
    putchar('\n');
    return 0;
}

运行示例

输入:

3
10 20 30

输出:

10 20 30