📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 6 月 – III |问题 71(1)

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

教资会网络 | UGC NET CS 2015 年 6 月 – III | 问题 71

简介

本题是 UGC NET CS 2015 年 6 月 – III 的第 71 题,针对计算机科学专业。该题主要考察了程序员在编写 C 代码时的一些细节问题。

题目描述

以下是问题 71 的完整描述:

void fun(int n)
{
    if(n > 0)
    {
        fun(n-1);
        printf("%d ", n % 10);
        fun(n/10);
    }
}

假设 fun(2048) 的执行结果为 8 4 0 2,则 fun(2458) 的执行结果为什么?

A. 8 4 5 2

B. 2 4 5 8

C. 2 4 8 5

D. 5 8 4 2

请从 A、B、C、D 四个选项中,选出正确的答案。

答案解析

本题的关键是理解给定的 fun 函数的代码含义。

该函数先递归调用 fun(n-1),再打印 n%10(即 n 的个位数),最后递归调用 fun(n/10)。由于是递归调用,因此可以理解为是按照 n 的从低位到高位的顺序输出各位数字。

因此,当 fun(2048) 的执行结果为 8 4 0 2 时,可以得到以下结果:

fun(2048)
|->fun(204)
|  |->fun(20)
|  |  |->fun(2)
|  |  |  |->printf("2 ")
|  |  |<-fun(2)
|  |  |->printf("0 ")
|  |<-fun(20)
|  |->printf("4 ")
|<-fun(204)
|->printf("8 ")
|->fun(0)

因此,可以知道 fun(2458) 的执行结果应为 8 5 4 2,因为这个数的从低位到高位的顺序分别是 8542

因此,答案为选项 A:8 4 5 2

参考资料
  1. UGC NET CS 2015 年 6 月 – III,问题 71