大门| 2008年大门|问题49

考虑下面给出的C程序。它打印什么?

null

#include <stdio.h>
int main ()
{
int i, j;
int a [8] = {1, 2, 3, 4, 5, 6, 7, 8};
for (i = 0; i < 3; i++) {
a[i] = a[i] + 1;
i++;
}
i--;
for (j = 7; j > 4; j--) {
int i = j/2;
a[i] = a[i] - 1;
}
printf ( "%d, %d" , i, a[i]);
}
/* Add code here. Remove these lines if not writing code */


(A) 2, 3 (B) 2, 4 (C) 3, 2 (D) 3, 3 答复: (C) 说明: 注意我的范围, 有两个变量名为:i,范围不同。

解决这个问题需要考虑2个要点。变量i和整数除法的范围。 第一个for循环将在i=0、2和4时运行,因为i在循环中递增两次,结果数组将是a=2、2、4、4、5、6、7、8(循环将在i=4时终止) 之后,i值为3,因为for循环之后有一个递减操作。 下一个for循环运行j=7、6和5,对应的i值是for循环内部的局部变量,分别为3(7/2)、3(6/2)和2(5/2)。在此for循环之后的数组将 a=2,2,3,2,5,6,7,8 在for循环之后,当前i值为3,元素a[3]=2。

这个解决方案是由 Pranjul Ahuja。

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享