📜  门| GATE CS 2021 |设置 1 |第 47 题

📅  最后修改于: 2021-09-27 05:32:56             🧑  作者: Mango

考虑以下 ANSI C 程序。

#include 
int main()
{
    int i, j, count;
    count=0;
    i=0;
    for (j=-3; j<=3; j++)
    {
        if (( j >= 0) && (i++))
        count = count + j;
    }
    count = count +i;
    printf(“%d”, count);
    return 0;
}

以下哪个选项是正确的?
(A)程序不会编译成功
(B)程序编译成功,执行时输出10
(C)程序编译成功,执行时输出8
(D)程序编译成功,执行时输出13答案:(乙)
说明:最初,i=0,count=0 并且for 循环从j= -3 运行到j=3。
如果 for 循环内的条件将在 j>=0 且 i 非零时执行,
所以对于 j=-3, -2, -1,它不会进入 if 条件,因为 j 小于 0。

当j=0时,i的初始值也为0,所以if条件不满足,但i++会在检查if条件后增加i的值。所以现在我=1。
当j=1时,i的值为1,因此进入if条件,count的值为0+1=1,i++在检查if条件后将i的值递增。所以现在我=2。
当j=2时,i的值为2,因此进入if条件,count的值为1+2=3,i++在检查if条件后将i的值递增。所以现在我=3。
当 j=3 时,i 的值为 3,因此进入 if 条件,count 的值为 3+3 =6 ,i++ 会在检查 if 条件后递增 i 的值。所以现在我=4。

运行for循环后,count变量的值为6,i的值为4。
所以 count= count +i 将是 6+4=10。

因此,程序将成功编译并在执行时输出 10:https://ide.geeksforgeeks.org/lyJ79mDqil
这个问题的测验