有以下程序 struct STU { char name[10]; int num; float TotalScore; }; vold f(struct STU *p) { struct STU s[2]={{"SunDan",20044,550),{"Penghua".20045,537}},*q=s ++p; ++q; *p=*q; } main() { struct SrU s[3]={{"YangSan",20041,703),{"LiSiGuo",20042,580}}; f(s); prin

题目

有以下程序 struct STU { char name[10]; int num; float TotalScore; }; vold f(struct STU *p) { struct STU s[2]={{"SunDan",20044,550),{"Penghua".20045,537}},*q=s ++p; ++q; *p=*q; } main() { struct SrU s[3]={{"YangSan",20041,703),{"LiSiGuo",20042,580}}; f(s); printf("%s %d %3.of\n",S[1].name,s[1].num,s[1].Totalscore); } 程序运行后的输出结果是

A.SunDan 20044 550

B.Penghua 20045 537

C.USiGuo 20042 580

D.SunDan 20041 703


相似考题
更多“有以下程序structSTU{char name[10];int num;float TotalScore;};voldf(structSTU*p){structSTUs ”相关问题
  • 第1题:

    有以下程序: struct STU {char name[10];int num;float TotalScore;}; void f(struct STU *p) {struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s; ++p;++q; *p=*q; } main() {struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}}; f(s); printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore); } 程序运行后的输出结果是 ______。

    A.SunDan 20044 550

    B.Penghua 20045 537

    C.LiSiGuo 20042 580

    D.SunDan 20041 703


    正确答案:B
    解析:本题将结构体数组s的首地址传递给了结构体指针变量p,并在函数f中改变了指针变量p所指向的第二个结构体中的成员变量,这一改变,也就是改变了主函数中s[1]的成员变量,故程序输出的值为Penghua 20045  537。

  • 第2题:

    有以下程序:include include struet STU{ int nam;float TotalSeore;};v

    有以下程序:#include <stdio, h>#include <string, h>struet STU{ int nam; float TotalSeore;};void f( strnct STU p){ struct STU s[2] = { {20044,550} ,{20045,537} }; p.num = s [1]. num; p.TotalScore = s [1]. TotalScore;main( ){ struct STU s[2] = {{20041,703} ,{20042,580}}; f(s[0] ); printf( "%d %3.Of\n" ,s[0].num,s[0].TotalSeore); }程序运行后的输出结果是( )。

    A.20045 537

    B.20044 550

    C.20042 580

    D.20041 703


    正确答案:D
    解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

  • 第3题:

    【单选题】有以下程序输出结果是()。 #include<stdio.h> struct stu {int num; char name[10]; int age; }; void fun(struct stu *p) {printf("%sn",(*p).name);} main() {struct stu students[3]= {{9801,"zhang",20},{9802,"Wang",19},{9803,"zhao",18}}; fun(students+2);}

    A.Zhang

    B.Zhao

    C.Wang

    D.18


    A a=3,b=4,sub(a++,b++)就是3*4=12,然后a=4,b=5;

  • 第4题:

    有以下程序#include <string.h>struct STU{ int num; float TotalScore; };void f(struct STU p){ struct STU s[2]={{1047,530},{1048,531}}; p.num = s[1].num; p.TotalScore = s[1].TotalScore;}main(){ struct STU s[2]={{2041,730},{2042,731}}; f(s[0]); printf("%d,%3.0f\n",s[0].num,s[0].TotalScore);}程序的运行结果是A.1047,530 B.1048,531C.2041,730 D.2042,731


    正确答案:C
    本题中,程序首先定义了一个结构体,该结构体包含一个整型和一个浮点型成员变量。然后定义了一个函数f,该函数无返回类型,函数的形参是已定义的结构体变量。在该函数中,首先定义了一个结构体数组s,并赋了初值,然后试题用结构体数组中各对应成员的值替代形参结构体变量中各成员的值,这里关键的问题还是参数的传递问题,由于结构体成员值的传递方式采用的是传值传递,是单向传递,即形参值的改变不影响实参的结果。
    在主函数中,同样定义了一个结构体数组s,并赋了初值,然后调用函数f,将s[0]作为函数的参数,输出s[0]中两成员的值,此时实参的值并没有得到改变。因此,最后输出的结果是2041,730。

     

  • 第5题:

    有以下程序:includeinclude struct STU {char name[10];int hum;};void f(

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

    A.SunDan 20042

    B.SunDan 20044

    C.LiSiGuo 20042

    D.YangSan 20041


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