📜  门| GATE-CS-2003 |第88章

📅  最后修改于: 2021-06-29 03:03:44             🧑  作者: Mango

在下面的C程序片段中,j,kn和TwoLog_n是整数变量,而A是整数数组。变量n初始化为≥3的整数,TwoLog_n初始化为2 *⌈log2(n)⌉的值

for (k = 3; k < = n; k++)
    A[k] = 0;
for (k = 2; k < = TwoLog_n; k++)
    for (j = k + 1; j < = n; j++)
        A[j] = A[j] || (j % k);
for (j = 3; j < = n; j++)
    if (!A[j]) printf("%d", j);

该程序片段打印的数字集为
(A) {m | m≤n,(∃i)[m = i!]}在这里,i!我的平均阶乘
(B) {m | m≤n,(∃i)[m = i 2 ]}
(C) {m | m≤n,m为质数}
(D) {}答案: (D)
说明:选项(D)是正确的,因为如果取n = 4,则TwoLog_n的值为4。
第一循环初始A [3] = A [4] = 0;
然后两个循环k = 2至4和j = 3至4

if k=2 
         j=3  A[3] = A[3] || (3%2) 
                          = 0 || 1
                  A[3] = 1 
       j=4  A[4] = A[4] || (4%2)
                         = 0 || 0
                A[4] = 0
K=3
         j=4  A[4] = A[4] || (4%3)

                        = 0 || 1
               A[4] = 1
K=4
     J=5 condition false means terminate
 A[3] = A[4] = 1

意味着最后一个打印循环永远不会执行。这个问题的测验