考虑以下 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
这个问题的测验