📌  相关文章
📜  教资会网络 | UGC NET CS 2014 年 12 月 – II |问题 37(1)

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

UGC NET CS 2014 年 12 月 – II |问题 37

问题:

以下 C 代码的输出是什么?

#include <stdio.h>
int main() {
    char *p = "Hello World";
    char *t;
    t = p++;
    while (*t != '\0') {
        printf("%c", *t);
        t++;
    }
    printf(" ");
    while (*--p != 'H') {
    }
    printf("%s", p);
    return 0;
}

(A) Hello World

(B) World

(C) World Hello

(D) None of the above

答案:

根据给出的 C 代码,我们有以下的执行步骤:

  1. main() 函数里,定义了 char *pchar *t

  2. p 被分配一个指向 "Hello World" 的地址。

  3. 下一行代码将 p++ 赋值给 t,然后将指针 p 向后移动一次。

  4. 第一个 while 循环遍历指针 t 所指向的字符序列,并依次打印每个字符。

  5. 第二个 while 循环将指针 p 移动到 'H' 字符或字符串的开头。

  6. printf() 函数输出 p 指针所指向的字符串。

因此,程序的输出将是 "World Hello",选项 (C) 是正确的。

答案:(C)

解释:

代码定义了一个指针 `p`,指向字符串 "Hello World"。另外定义了一个指针 `t`,并将指针 `p` 向后移动一次的结果赋值给 `t`。 

程序先输出指针 `t` 所指向的字符序列,即字符串 "Hello World",接下来输出空格。指针 `p` 移到字符串的开头,再输出指针 `p` 所指向的字符串 "World"。

输出结果:World Hello