单选题有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(STU *c){ strcpy(c->name,Qian); c->gender='f'; c->score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(&b); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%

题目
单选题
有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(STU *c){ strcpy(c->name,Qian); c->gender='f'; c->score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(&b); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}程序运行后的输出结果是(  )。
A

Zhao,m,290,Qian,f,350

B

Zhao,m,290,Qian,m,290

C

Zhao,m,290,Zhao,m,290

D

Zhao,m,290,Qian,m,350


相似考题
更多“单选题有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(STU *c){ strcpy(c-name,Qian); c-gender='f'; c-score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(b); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c”相关问题
  • 第1题:

    有以下程序: include struct STU (char name[10]; int num; };

    有以下程序: #include <string.h> struct STU (char name[10]; int num; }; void f(char *name, int num) {struct STU s[2]={{"SunDan",20044}.{"Penghua",20045}}; num=s[0].num; strcpy(name,s[0].name); } main() {struct STU s[2]={{"YangSall",20041},{"LiSiGao",20042}},*p;p=&s[1]; f(p->name,p->num); printf("%s%d\n",p->name,p->num); } 程序运行后的输出结果是 ______。

    A.SunDan 20042

    B.SunDan 20044

    C.LiSiGuo 20042

    D.YangSan 20041


    正确答案:A
    解析:本题主函数中定义了结构体类型的指针变量p,并使其指向了结构体类型的数组s[1],并通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了主函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就是刘主函数中p->name的改变,而函数f中对形参num的改变并不会影响主函数中p->num的值,因为此时传递给num的是一个值,而不是地址。

  • 第2题:

    有以下程序: #include<stdio.h> #include<string.h> typedef struct{char name[9];char sex;int score[2];}STU; STU f(STU a) { STU b={"Zha0","m",85,90}; int i; strcpy(a.name,b.name); sex=b.sex; for(i=o;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[l]); 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,85m90

    C.Qian,f,95,92,Qian,f,95,92

    D.Qian,f,95,92,zhan,m,85,90


    正确答案:A
    此题涉及C语言中的结构体,主要功能为输出b和C中的name、sex、score[0]和score[1]中的值。

  • 第3题:

    有以下程序 #include <stdio.h> #include <string.h> typedef strlIct{char name[9];char sex;float score[2];}STU; STU f(STU a) { STU b={"Zhao",m,85.0,90.0);int i; strcpy(a name,b.name); sex:b.sex; for(i=0;i<2;i++)a.score[i]=b.score[i]; return a; } main {STU c="Qian",f,95.0,92.0},d; d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]); } 程序的运行结果是( )。

    A.Qian,f,95,92

    B.Qian,m,85,90

    C.Zhao,m,85,90

    D.Zhao,f,95,92


    正确答案:C
    f函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。

  • 第4题:

    有以下程序

    #include<stdio.h>

    #include<siring.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]);

    prinff("%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
    解析:本题考察的是结构体知识和函数调用的参数传递知识点。通过函数调用把主函数中c变量的所有数据传给了子函数中的形参a,在子函数中将b中的数据均复制到了a中,所以返回a的值给d,使得d的值为zhao,m,85,90。但是主函数中c变量的值没有任何变化,所以选择A)。

  • 第5题:

    有以下程序:includeincludetypedef struct{char name[9];char sex;float s

    有以下程序: #include <stdio.h> #include <string.h> typedef struct{char name[9];char sex;float score[2]}STU; STU f(STU A) {STU b={"Zhao",'m',85.0,90.0}; int i; strcpy(a.name,b.namC) ; a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; return a; } main() {STU c={"Qian",'f',95.0,92.0},d; d=f(C) ; pintf("%s,%c,%2.of.%2.of\n",d.name,d.sex,d.score[0],&score[1]); } 程序的运行结果是( )。

    A.Qian,f,95,92

    B.Qian,m,85,90

    C.Zhao,m,85,90

    D.Zhao,C95,92


    正确答案:C
    解析:本题的f()函数中,首先定义了一个STU结构体变量b并初始化为{"Zhao",'m',85.0,90.0},然后分别通过strcpy()库函数、赋值语句和for循环,将b中所有成员分别赋给形参a的相应成员,最后返回a。所以,无论传递给函数fun()的参数是什么,结果返回的都会是函数中定义的STU结构体b的内容{"Zhao",'m',85.0,90.0}。故最终输出结果为:Zhao,m,85,90;应该选择C。

  • 第6题:

    试题36

    有以下程序

    #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, 85,90, Qian, f, 95, 92

    D.Qian, f, 95, 92, Zhao, m, 85, 90


    正确答案:A
    试题36分析
    相当于传值调用,形参的值被改变了,但实参的值并没有改变。
    试题36答案
    A

  • 第7题:

    单选题
    有以下程序 #include  typedef struct stu {  char name[10];  char gender;  int score;  } STU; void f(STU a, STU *b) {  *b = a;  printf(%s,%c,%d,, b->name, b->gender, b->score); } main() {  STU a={Zhao, 'm', 290}, b={Qian, 'f', 350};  f(a,&b);  printf(%s,%c,%d, b.name, b.gender, b.score); } 程序运行后的输出结果是(  )。
    A

    Zhao,m,290,Qian,f,350

    B

    Qian,m,290,Zhao,m,290

    C

    Qian,f,350,Qian,f,350

    D

    Zhao,m,290,Zhao,m,290


    正确答案: D
    解析:
    考察结构体和结构体成员的引用。main函数中,首先为结构变量a,b初始化,再调用函数f,在f函数中,使用结构体变量a对指针b指向的结构体进行赋值,使得指针b指向的结构体成员依次赋值为结构体a的成员,然后依次输出指针b指向的结构体成员的值;由于f函数形参b为指针,所以指针b指向的值被修改为a的同时,main函数中的实参b的值也被修改成a。答案选择D选项。

  • 第8题:

    单选题
    若有以下程序#include typedef struct stu{ char name[10],gender; int score; } STU;void f(STU a, STU b){ b = a; printf(%s,%c,%d,, b.name, b.gender, b.score);}main(){ STU a={Zhao, 'm', 290}, b={Qian, 'f', 350}; f(a,b); printf(%s,%c,%d, b.name, b.gender, b.score);}则程序的输出结果是(  )。
    A

    Zhao,m,290,Qian,f,350

    B

    Zhao,m,290,Zhao,m,290

    C

    Qian,f,350,Qian,f,350

    D

    Zhao,m,290,Zhao,f,350


    正确答案: A
    解析:
    当把结构体变量中的数据作为一个整体传送给相应的形参时,传递的是实参结构体变量中的值,系统将为结构体类型形参开辟相应的存储单元,并将实参中各成员的值一一对应赋给形参中的成员,函数中形参结构体变量的改变不会影响到实参结构体变量。所以,在函数f中对a,b的操作不会影响main函数中a,b的值。答案选择A选项。

  • 第9题:

    单选题
    有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(char *name, char *gender, int *score){ strcpy(name,Qian); *gender='f'; *score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(b.name,&b.gender,&b.score); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}程序运行后的输出结果是(  )。
    A

    Zhao,m,290,Qian,f,350

    B

    Qian,m,290,Zhao,m,290

    C

    Zhao,m,290,Zhao,m,290

    D

    Zhao,m,290,Qian,m,290


    正确答案: C
    解析:
    main函数中,首先定义两个结构体stu类型的变量a,b,把a成员信息复制给b成员后,再调用函数f,在f函数中,利用指针重新对b成员信息进行赋值,分别输出a,b成员信息。答案选择A选项。

  • 第10题:

    单选题
    有以下程序:#include #include typedef struct stu{ char name[10]; char gender; int score;}STU;void f(char *name,char gender,int score){ strcpy(name,Qian); gender='f'; score=350;}main(){ STU a={Zhao,'m',290},b; b=a; f(b.name,b.gender,b.score); printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}程序的运行结果是(  )。
    A

    Zhao,m,290,Qian,m,290

    B

    Zhao,m,290,Zhao,m,290

    C

    Zhao,m,290,Qian,m,350

    D

    Zhao,m,290,Qian,f,350


    正确答案: B
    解析:
    程序执行过程为:将a赋给b,调用f函数,将b中name地址与gender和score的值传进函数,执行函数体,strcpy函数改变b中name值,但由于后两个成员gender和score为值传递,不能改变b中gender和score值。调用函数结束后,结构体a= {"Zhao", 'm', 290},b= {"Qian', 'm', 290}。答案选择A选项。

  • 第11题:

    单选题
    有以下程序#include #include 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, 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
    解析:
    本题考查的是函数调用时的参数传递问题。struct变量作为形参和返回值时,传递的是结构体类型的值。f函数中,把b变量赋值给a,然后将a返回并赋值给d,所以,d中的数据与b的数据相同,但c中的成员并没有受到任何影响。答案选择A选项。

  • 第12题:

    单选题
    有以下程序:#include #include typedef struct{ char name[9]; char sex; float score[2];} STU;void f(STU *A){ strcpy(a->name,Zhao); a->sex='m'; a->score[1]=90.0;}main(){ STU c = {Qian,'f',95.0,92.0},*d=&c; f(d); printf(%s,%c,%2.0f,%2.0f, d->name, c.sex, c.score[0], c.score[1]);}程序的运行结果是(  )。
    A

    Qian,f,95,92

    B

    Zhao,f,95,90

    C

    Zhao,m,95,90

    D

    Zhao,f,95,92


    正确答案: C
    解析:
    f函数调用时,结构体数组名作为实参传给形参指针,结构体指针a指向数组c的首地址。因此,f可以对数组c中的元素赋值,故返回主函数之后,数组c中的成员值已被更新。main函数中有赋值语句“*d=&c;”,指针d指向结构体数组c的首地址,故d->name=c.name,输出结果为Zhao,m,95,90。答案选择C选项。

  • 第13题:

    有以下程序 include include typedef struct { cha

    有以下程序 #include <stdio.h> #include <string.h> typedef struct { char name[9]; char sex; float score[2]; } STU; STU f(STU a) { STU b={"Zhao", 'm', 85.0, 90.0}; 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", T, 95.0, 92.0}, d; d=f(c); printf("%s,%c,%2.0f,%2.0f\n", d.name, &sex, &score[O], d.score[1]); } 程序的运行结果是

    A.Qian, f,95,92

    B.Qian,m,85,90

    C.Zhao,m,85,90

    D.Zhao,f,95,92


    正确答案:C
    解析:本题的f()函数中,首先定义了一个STU结构体变量b并初始化为{"Zhao",'m',85.0,90.0},然后分别通过strcpy()库函数、赋值语句和for循环,将b中所有成员分别赋给形参a的相应成员,最后返回a。所以,无论传递给函数fun()的参数是什么,结果返回的都会是函数中定义的STU结构体b的内容{"Zhao",'m',85.0,90.0}。故最终输出结果为:Zhao,m,85,90,应该选择C。

  • 第14题:

    有以下程序 include main() { struct STU{char name[9];char sex;double

    有以下程序 #include <stdio.h> main() { struct STU{char name[9];char sex;double score[2];}; sturt STU a={"Zhao" ,'m',85.0,90.0},b={"Qian" ,'f,95:0,92.0}; b=a; printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]); } 程序的运行结果是______。

    A.Qian,f,95,92

    B.Qian,85,90

    C.Zhao,f,95,92

    D.Zhao,m,85,90


    正确答案:D
    解析:本题定义了两个结构体变量a和b,并将结构体变量a的内容赋给了结构体变量b。对于结构体的赋值,意味这将其中的每一个元素都进行赋值,所以输出的结构体变量b中的内容即为结构体变量a中的各项内容。另外本题需要注意的是输出格式的控制,其中“%2.0f”指的是输出的数据共占2列,其中有0位小数。

  • 第15题:

    有以下程序: #include<stdio.h> struct STU{char name[9];char sex;int score[2];}; void f(struct STU a[]) { struct STU b={"Zhao",m,85,90); a[1]=b; } main( ) { struct STU c[2]={{"Qian",f,95,92},{"Sun",m 98,99}}; f(c); printf(”%s,%c,%d,%d,¨,c[o].name,c[o].sex,c[o].score[o],c[o].score[1]); printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[o],c[1].score [1]); } 程序运行后的输出结果是( )。

    A.Zhao,m,85,90,Sun,m,98,99

    B.Zhao,m,85,90,Qian,f,95,92

    C.Qian,f,95,92,Sun,m,98,99

    D.Qian,f,95,92,Zhao,m,85,90


    正确答案:D
    F函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选D。

  • 第16题:

    有以下程序 include include typedef stmct{ char name[9];char sex;flo

    有以下程序

    #include <stdio.h>

    #include <string.h>

    typedef stmct{ char name[9];char sex;float score[2];}STU;

    void f(STU a)

    { STU b={"Zhao",'m',85.0,90.0}; int i;

    strcpy(a.name,b.name) ;

    a.sex=b.sex;

    for(i=0;i<2;i++) a.score[i]=b.score[i];

    main( )

    { STU c={"Qian",'f',95.0,92.0};

    f(c);printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]) ;

    }

    程序的运行结果是

    A.Qian,f,95,92

    B.Qian,m,85,90

    C.Zhao,f,95,92

    D.Zhao,m,85,90


    正确答案:A
    解析:本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个副本,函数f的所有操作只是针对这个数据副本进行的修改,这些都不会影响变量c的值。

  • 第17题:

    有以下程序

    #include<stdio.h>

    #include<string.h>

    typedef struct {char name[9]; char sex; float score[2];}STU;

    STU f(STU

    A.

    {

    STU b={“Zhao”,’m’,85.0,90.0}; 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.0,92.0},d;

    d=f(

    C.;

    printf(“%s,%c,%2.0f,%2.0f\n”,d.name,d.sex,d.score[0], d.score[1]);

    }

    程序的运行结果是( )。

    A. Qian,f,95,92

    B.Qian,m,85,90

    C.Zhao,m,85,90

    D.Zhao,f,95,92


    正确答案:C

  • 第18题:

    单选题
    有以下程序#include #include typedef struct{ char name[9]; char sex; float score[2];} STU;STU f(STU a){ STU b={zhao,'m',85.0,90.0}; 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.0,92.0},d; d=f(c); printf(%s,%c,%2.0f,%2.0f, d.name, d.sex, d.score[0], d.score[1]);}程序的运行结果是(  )。
    A

    Qian,m,85,90

    B

    Zhao,m,85,90

    C

    Qian,f,95,92

    D

    Zhao,f,95,92


    正确答案: B
    解析:
    struct变量作为形参和返回值时,传递的是结构体类型的值。f函数中,把b变量赋值给a,然后将a返回并赋值给d,所以,d中的数据与b的数据相同。答案选择B选项。

  • 第19题:

    单选题
    有以下程序:#include struct STU{ char name[9]; char sex; int score[2];};void f(struct STU a[]){ struct STU b={zhao,'m',85,90}; a[1]=b;}main(){ struct STU c[2] = {{Qian,'f',95,92}, {Qian,'f',95,92}}; f(c); printf(%s,%c,%d,%d,, c[0].name, c[0].sex, c[0].score[0], c[0].score[1]); printf(%s,%c,%d,%d, c[1].name, c[1].sex, c[1].score[0], c[1].score[1]);}程序运行后的结果是(  )。
    A

    Zhao,m,85,90,Sun,m,98,99

    B

    Zhao,m,85,90,Qian,f,95,92

    C

    Qian,f,95,92,Sun,m,98,99

    D

    Qian,f,95,92,Zhao,m,85,90


    正确答案: B
    解析:
    函数f的功能是将重新定义的结构体b整体赋给a[1],即数组a的第二个元素,而数组a的第一个元素不变。因此main函数中调用函数f时,即数组c的第二个元素变成结构体b,第一个元素不变。答案选择D选项。

  • 第20题:

    单选题
    有以下程序:#include #include typedef struct{ char name[9]; char sex; float score[2];} STU;void f(STU a){ STU b={zhao,'m',85.0,90.0}; int i; strcpy(a.name, b.name); a.sex = b.sex; for(i=0; i<2; i++) a.score[i]=b.score[i];}main(){ STU c={Qian,'f',95.0, 92.0}; f(c); printf(%s,%c,%2.0f,%2.0f, c.name, c.sex, c.score[0], c.score[1]);}程序的运行结果是(  )。
    A

    Qian,f,95,92

    B

    Qian,m,85,90

    C

    Zhao,f,95,92

    D

    Zhao,m,85,90


    正确答案: B
    解析:
    结构体作为函数参数时是传值调用。本题中,函数传递的是实参结构体变量中的值。函数体内对形参结构体变量中任何成员的操作都不会影响对应实参中成员的值。因此,f函数没有任何实际作用。答案选择A选项。

  • 第21题:

    单选题
    若有以下程序#include #include #include typedef struct stu{ char *name,gender; int score;}STU;void f(char *p){ p=(char *)malloc(10); strcpy(p,Qian);}main(){ STU a={NULL,'m',290},b; a.name=(char *)malloc(10); strcpy(a.name,Zhao); b=a; f(b.name); b.gender='f'; b.score=350; printf(%s,%c,%d,, a.name, a.gender, a.score); printf(%s,%c,%d, b.name, b.gender, b.score);}则程序的输出结果是(  )。
    A

    Qian,m,290,Qian,f,350

    B

    Zhao,m,290,Qian,f,350

    C

    Qian,f,350,Qian,t,350

    D

    Zhao,m,290,Zhao,f,350


    正确答案: D
    解析:
    初始化时,struct a中的数据:a.name:Zhao,a.gender:m,a.score:290。执行b=a,则b中的数据:b.name:Zhao,b.gender:m,b.score:290,struct在赋值过程中实现的是浅拷贝,a.name和b.name指向同一块内存空间。执行f(b.name),函数f中形参p和b.name指向同一块内存空间,在f函数内部,p又重新指向另外一块分配的内存空间,而b.name的指向没有变化,指向的内存空间的值也没有发生变化,函数f返回后,b.name中的值依然是Zhao。答案选择D选项。

  • 第22题:

    单选题
    有以下程序:#include typedef struct stu{ char name[10]; char gender; int score; } STU;void f(STU *a, STU *b){ *b = *a; printf(%s,%c,%d,, b->name, b->gender, b->score);}main(){ STU a={Zhao, 'm', 290}, b={Qian, 'f', 350}; f(&a,&b); printf(%s,%c,%d, b.name, b.gender, b.score);}程序的运行结果是(  )。
    A

    Zhao,m,290,Zhao,m,290

    B

    Zhao,in,290,Qian,f,350

    C

    Qian,f,350,Qian,f,350

    D

    Qian,f,350,Zhao,m,290


    正确答案: A
    解析:
    调用函数时,若采用传引用的方式,那么对形参进行操作,实参也会产生相应的变化。程序执行过程为:调用f函数,将结构体a与b的地址作为参数传入函数,函数中指针a指向结构体a,指针b指向结构体b,将指针a指向的结构体a赋给指针b指向的结构体b,结构体b内容被修改。输出b指向的结构体b的元素Zhao,m,290。调用函数结束实参b的成员值也发生改变,输出结构体b的元素Zhao,m,290。答案选择A选项。

  • 第23题:

    单选题
    有以下程序:#include typedef struct stu{ char name[10]; char gender; int score; } STU;void f(STU a, STU *b){ a = *b; printf(%s,%c,%d,, a.name, a.gender, a.score);}main(){ STU a={Zhao, 'm', 290}, b={Qian, 'f', 350}; f(a,&b); printf(%s,%c,%d, a.name, a.gender, a.score);}程序运行后的输出结果是(  )。
    A

    Qian,f,350,Qian,f,350

    B

    Zhao,m,290,Qian,f,350

    C

    Qian,f,350,Zhao,m,290

    D

    Zhao,m,290,Zhao,m,290


    正确答案: A
    解析:
    f函数的功能:用形参结构体指针b指向的结构体对形参a赋值,此时形参结构体a的值为指针b指向的值,输出a即输出指针b指向的结构体;注意在函数f中形参a是值传递,对形参的操作不会影响实参,因此返回到main函数后,实参a的值没有改变,仍为初始化时的值。答案选择C选项。