问题 单项选择题

有以下程序

#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,不符合循环条件i<4,跳出循环,故选项C是正确的。

单项选择题
多项选择题 X型题