有以下程序#include <stdio.h>typedef struct{ int num;double s ; }REC;void fun1( REC x ){x.num=23; x.s=88.5;}main(){ REC a={16,90.0 };fun1(a);printf("%d\n",a.num);}程序运行后的输出结果是 【 1 4 】 。

题目

有以下程序

#include <stdio.h>

typedef struct

{ int num;double s ; }REC;

void fun1( REC x ){x.num=23; x.s=88.5;}

main()

{ REC a={16,90.0 };

fun1(a);

printf("%d\n",a.num);

}

程序运行后的输出结果是 【 1 4 】 。


相似考题
更多“有以下程序#include &lt;stdio.h&gt;typedef struct{ int num;double s ; }REC;void fun1 ”相关问题
  • 第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 struct NODE { int num; struct NODE*next; }; main() { struct

    有以下程序:

    #include <stdlib.h>

    struct NODE

    { int num; struct NODE *next; };

    main()

    { struct NODE *p,*q,*r;

    p=(struct NODE*)malloc(sizeof(struct NODE));

    q=(struct NODE*)mallloc(sizeof(struct NODE));

    r=(struct NODE*)malloc(sizeof(struct NODE));

    p->num=10;q->num=20; r->num=30;

    p->next=q;q->next=r;

    printf("%d\n",p->num+q->next->num);

    }

    程序运行后的输出结果是( )。

    A.10

    B.20

    C.30

    D.40


    正确答案:D
    解析:本题在主函数中首先定义了3个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量p->num的值为10,指针变量q->next指向指针变量r,r->num的值为30,所以变量q->next->num的值为30,因此,表达式p->num+q->next->num的值为10+30=40。所以4个选项中D正确。

  • 第3题:

    有以下程序:includevoid fun(int* s,int* * d){* *d=*(s+2);}main(){ inta[]={1,2,3,

    有以下程序: #include <stdlib.h> void fun(int * s,int * * d) { * *d=*(s+2); } main() { int a[]={1,2,3,4,5},*b; b=(int *)malloc(sizeof(int)); fun(a,&B) ; printf("%d\n",*b+1); } 程序的输出结果是( )

    A.2

    B.3

    C.4

    D.5


    正确答案:C

  • 第4题:

    下面程序的运行结果为includeclass A{ int num;public: A(int){num=i;} A(ABm){num

    下面程序的运行结果为 #include<iostream.h> class A { int num; public: A(int){num=i;} A(ABm){num=a.num++;} void print(){cout<<num;} }; void main() { Aa(1),b(a); a.print(); b.print(); }

    A.11

    B.12

    C.21

    D.22


    正确答案:C
    解析:本题;号查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的num变为l而a的num变为2(先赋值再自加)。

  • 第5题:

    有以下程序: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函数中初始化时的数据。