有以下程序#includeintt b=2;int fun(int*k) {b=*k+b;return(b);}main(){int a[10]={1,

14 查阅

有以下程序 #include<stdio.h> intt b=2; int fun(int*k) {b=*k+b;return(b);} main() { int a[10]={1,2,3,4,5,6,7,8,},i; for(i=2;i<4;i++) {b=fun(&a[i])+b; printf("%d",b);} print("\n"); } 程序运行后的输出结果是______。

A.10 12

B.8 10

C.10 28

D.10 16

参考答案:

C解析:程序在执行for循环中,第—次调用fun()函数时,因为变量i的值为2,所以&a[i]指向a[2]),值为3,又因为b是全局变量,所以在fun函数中可以直接使用,执行“b=*k+b;”,即b=3+2=5,从被调函数中返回的值为5,此时全局变量b的值也变为5,所以由main()函数中执行语句“b=fun(&a[i])+b;”的结果b=5+5=10,因此第—次输出b的值为10;第二次调用时变量i的值为3,调用 fun函数的返回值为14,所以第二次输出28,此时for循环中,变量i=4,

计算机二级