有以下程序 #include<stdio.h> intt b=2; int fun(int*k) {b=*k+b;return(b);} main() { int a[

admin2009-09-28  33

问题 有以下程序        #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)+b;  printf("%d",b);}           print("\n");        }        程序运行后的输出结果是______。

选项 A、10  12
B、8  10
C、10  28
D、10  16

答案C

解析 程序在执行for循环中,第—次调用fun()函数时,因为变量i的值为2,所以&a指向a[2]),值为3,又因为b是全局变量,所以在fun函数中可以直接使用,执行“b=*k+b;”,即b=3+2=5,从被调函数中返回的值为5,此时全局变量b的值也变为5,所以由main()函数中执行语句“b=fun(&a)+b;”的结果b=5+5=10,因此第—次输出b的值为10;第二次调用时变量i的值为3,调用 fun函数的返回值为14,所以第二次输出28,此时for循环中,变量i=4,不符合循环条件i<4,跳出循环,故选项C是正确的。
转载请注明原文地址:https://kaotiyun.com/show/f9Wp777K
0

最新回复(0)