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

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

UGC NET CS 2015 年 12 月 - II | 问题 39

本文讨论了2015年12月UGC NET计算机科学和应用科学-II考试中的第39个问题。

问题描述

考虑下面的5个程序段P1, P2, P3, P4和P5:

P1:
for (i = 1; i ≤ n; i = 2 ∗ i) 
    printf("1");

P2:
for (i = n; i > 1; i = i / 2) 
    printf("1");

P3:
for (i = 1; i * i ≤ n; i++) 
    printf("1");

P4:
for (i = 1; i <= n; i++) 
    for (j = 1; j <= n; j = 2 ∗ j) 
        printf("1");

P5:
for (i = 1; i <= n; i = i ∗ i) 
    printf("1");

在程序段P1, P2, P3, P4和P5中的任何一个中,当n增大时,输出的“1”的数量将如何迅速增加?

A) 仅程序段P5

B) 仅程序段P1和P5

C) 仅程序段P2, P3和P5

D) 仅程序段P1, P2, P3和P4

答案:B

解答

程序段P1,P2,P3,P4和P5都是循环,但它们采用了不同的循环控制变量和参数。对于上述程序的每个循环,我们将计算输出的“1”的数量。

  1. P1中的循环条件是i ≤ n,每次i翻倍,因此循环内的语句将执行log2(n)次,输出的“1”的数量是log2(n)。

  2. 在P2中,循环的条件是i > 1,i每次折半,因此循环将执行log2(n)次,输出的“1”的数量是log2(n)。

  3. P3中的循环条件是i * i ≤ n,i每次递增1,因此循环将执行sqrt(n)次,输出的“1”的数量是sqrt(n)。

  4. 在P4中,i和j都从1开始,i递增1,j翻倍增加。内部循环的次数是log2(n),因此外部循环的总次数是nlog2(n)。因此,输出的“1”的数量是nlog2(n)。

  5. 最后,在P5中,循环条件是i ≤ n,每次i翻倍使得循环内的语句将执行log2(log2(n))次,输出的“1”的数量是log2(log2(n))。

因此,当n增大时,P1,P2和P5中输出的“1”的数量将快速增加,而P3和P4中的输出数量将增加得更慢。因此,答案是B,即仅程序段P1和P5中的“1”数量将快速增加。

Markdown 格式代码片段:

## 解答

程序段P1,P2,P3,P4和P5都是循环,但它们采用了不同的循环控制变量和参数。对于上述程序的每个循环,我们将计算输出的“1”的数量。

1. P1中的循环条件是i ≤ n,每次i翻倍,因此循环内的语句将执行log2(n)次,输出的“1”的数量是log2(n)。

2. 在P2中,循环的条件是i > 1,i每次折半,因此循环将执行log2(n)次,输出的“1”的数量是log2(n)。

3. P3中的循环条件是i * i ≤ n,i每次递增1,因此循环将执行sqrt(n)次,输出的“1”的数量是sqrt(n)。

4. 在P4中,i和j都从1开始,i递增1,j翻倍增加。内部循环的次数是log2(n),因此外部循环的总次数是n*log2(n)。因此,输出的“1”的数量是n*log2(n)。

5. 最后,在P5中,循环条件是i ≤ n,每次i翻倍使得循环内的语句将执行log2(log2(n))次,输出的“1”的数量是log2(log2(n))。

因此,当n增大时,P1,P2和P5中输出的“1”的数量将快速增加,而P3和P4中的输出数量将增加得更慢。因此,答案是B,即仅程序段P1和P5中的“1”数量将快速增加。