考虑下面给出的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