单选题 有以下程序:
#include <stdio.h>
#include <string.h>
typedef struct { char name[9]; char sex; int score[2];} STU;
STU f(STU a)
{ STU b={"Zhao", 'm', 85, 90};
int i;
strcpy(a.name, b.name);
a.sex=b.sex;
for(i=0; i<2; i++) a.score[i]=b.score[i];
return a;
}
main()
{ STU c={ "Qian", 'f', 95, 92 }, d;
d=f(c);
printf("%s, %c, %d, %d,", d.name, d.sex, d.score[0], d.score[1]);
printf("%s, %c, %d, %d/n", c.name, c.sex, c.score[0], c.score[1]);
}
程序运行后的输出结果是______。
  • A.Zhao, m, 85, 90, Qian, f, 95, 92
  • B.Zhao, m, 85, 90, Zhao, m, 85, 90
  • C.Qian, f, 95, 92, Qian, f, 95, 92
  • D.Qian, f, 95, 92, Zhao, m, 85, 90
【正确答案】 A
【答案解析】[解析] 本题考查的是函数调用时的参数传递问题。程序在调用甬数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。