单选题 有以下程序: #include void fun(int *s) { static int j=0; do s[j]+=s[j+1]; while(++j<2); } main() { int i,a[10]={1,2,3,4,5}; for(i=1;i<3;i++) fun(a); for(i=1;i<5;i++) printf("%d",a[i]); printf("\n"); } 程序运行后的输出结果是( )。
【正确答案】 A
【答案解析】解析:主函数main()中第一个for循环中共调用函数fun()两次:第一次调用时,do一while循环的循环体执行两次,结束后a[10]=(3,5,3,4,5),静态变量j=2,由于静态变量定义时的初始化只运行一次,所以第二次调用时,j保留第一次调用结束时的值2,do一while循环执行一次,结束后a[10]={3,5,7,4,5},所以第二个for循环输出数组a下标范围为1到4之间的元素,所以答案选A。