有以下程序 #include <stdio.h> #include <string.h> typedef struct{char name[9]; char sex; int score[2]; }STU; STU f(STU a) { STU b={"

admin2018-10-16  13

问题 有以下程序
#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=b.score;
   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,",c.name,c.sex,c.score[0],c.score[1]);
}

选项 A、Zhao,m,85,90, Zhao,m,85,90       
B、Qian,f,95,92, Qian,f,95,92
C、Zhao,m,85,90, Qian,f,95,92       
D、Qian,f,95,92, Zhao,m,85,90

答案C

解析 在C语言中,函数实参与形参之间数据的传递是传值,也就是说在用实参调用形参时,是把实参的值拷贝一份给形参,而实参的值并不变化,仍是原来的值。所以对于本题来说,在主函数中调f(e)后,实参e的值并不会变化,仍是原值。在函数f中把局部变量b的值依次返回给变量d。
转载请注明原文地址:https://jikaoti.com/ti/Zwa0FFFM
0

最新回复(0)