📌  相关文章
📜  教资会网络 | UGC NET CS 2017 年 1 月至 2 日 |问题 38(1)

📅  最后修改于: 2023-12-03 15:39:55.495000             🧑  作者: Mango

UGC NET CS 2017 年 1 月至 2 日

问题 38

给出下面的程序段:

#define P 5

int main() {
    int a[P] = {1, 2, 3, 4, 5}, i;
    int *p=&a[0], *q=&a[P-1];

    for (i = 0; i < P/2; i++) {
        int temp = *p;
        *p = *q;
        *q = temp;
        p++;
        q--;
    }

    return 0;
}

代码的输出结果是什么?

答案

该程序可将数组 a 中的元素反转。反转的过程如下:

  1. 定义了一个宏 P,其值为 5。
  2. 定义了一个长度为 P 的整型数组 a,并将其初始化为 {1, 2, 3, 4, 5}。
  3. 定义了两个指针变量 p 和 q,使得 p 指向数组 a 的第一个元素,q 指向数组 a 的最后一个元素。
  4. 通过一个 for 循环,将 p 指针所指向的元素和 q 指针所指向的元素交换位置。
  5. 最后返回 0。

因此,程序的输出结果为数组 a 中元素值为 {5, 4, 3, 2, 1}。

输出结果:
{5, 4, 3, 2, 1}

代码片段:

#define P 5

int main() {
    int a[P] = {1, 2, 3, 4, 5}, i;
    int *p=&a[0], *q=&a[P-1];

    for (i = 0; i < P/2; i++) {
        int temp = *p;
        *p = *q;
        *q = temp;
        p++;
        q--;
    }

    // Output reversed array
    printf("{");
    for (i = 0; i < P; i++) {
        printf("%d", a[i]);
        if (i != P - 1) {
            printf(", ");
        }
    }
    printf("}\n");

    return 0;
}