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

📅  最后修改于: 2021-06-29 01:24:06             🧑  作者: 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答案: (B)
说明:最初,i = 0,count = 0,并且for循环从j = -3到j = 3运行。
如果在j> = 0且i不为零时执行for循环内的条件,
因此对于j = -3,-2,-1,它将不会进入if条件内,因为j小于0。

当j = 0时,i的初始值也为0,因此如果条件不满足,但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
这个问题的测验