问题
单项选择题
有以下程序
#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是正确的。