参考答案和解析
正确答案:B
更多“typedef struct{ int num; char *n”相关问题
  • 第1题:

    设有以下说明语句

    typedef struct

    { int n;

    char ch[8];

    } PER;

    则下面叙述中正确的是

    A.PER 是结构体变量名

    B.PER是结构体类型名

    C.typedef struct 是结构体类型

    D.struct 是结构体类型名


    正确答案:B
    解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

  • 第2题:

    有以下程序 include typedef struct { int num;double s; }REC; void funl(REC *x) { x

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


    正确答案:23
    23

  • 第3题:

    下列对结构及其变量定义错误的是( )。

    A.struct My Struct

    B.struct MyStruct{ {int num; int num;char ch; char ch;} }My;

    C.strut

    D.struct{ {int num; int num;char ch; char ch;}My; };


    正确答案:D

  • 第4题:

    有以下定义和语句: struct students {int num;char name[20];char c; struct {int grade1;int grade2;}s; }; struct students w,*pw; *pw=w; 下列赋值语句不正确的是( )。

    A.w.num=1002;

    B.w.grade1=85;

    C.pw->num=1002;

    D.w.s.grade2=85;


    正确答案:B

  • 第5题:

    以下对结构体类型变量td的定义中,错误的是 ______。

    A.typedef struct aa

    B.struct aa {int n; {int n; float m; float m; }AA; }td; AAtd; struct aa td;

    C.struct

    D.struct {int n; {int n; float m; float m; }aa; }td; struct aa td;


    正确答案:C
    解析:选项C中的aa本身就为结构体变量名,所以不能再用它来定义结构体变量,故此种定义方法是错误的。

  • 第6题:

    有以下程序 include struct NODE{ int num; struct NODE *next;}; main( )

    有以下程序

    #include <stdlib.h>

    struct NODE{

    int num;

    struct NODE *next;};

    main( )

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

    int sum=0;

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

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

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

    p->num=1;q->num=2;r->num=3;

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

    sum+=q->next->num;sum+=p->num;

    printf(“%d\n”,sum);}

    执行后的输出结果是

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:q—>next—>num=3,p—>num=1,所以结果为4。

  • 第7题:

    有如下程序段#include "stdio.h"typedef union{ long x[2]; int y[4]; char z[8];}atx;typedef struct aa { long x[2]; int y[4]; char z[8];} stx;main(){ printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));}则程序执行后输出的结果是A.union=8,struct aa=8 B.union=8,struct aa=24C.union=24,struct aa=8 D.union=24,struct aa=24


    正确答案:B
    本题主要考查结构体和联合体所占的存储空间。
    在本题程序中,首先定义了一个联合体,联合体中具有三个成员,它们的类型分别为长整型、整型和字符型。按照C语言的规定,这三种类型的变量所占的存储空间分别为4个字节、2个字节和1个字节。但由于定义的成员都是数组,长整型数组的大小为2,那么需要的总空间为8个字节;整型数组的大小为4,那么需要的总空间为8个字节;字符数组的大小为8,需要的总空间也为8个字节,因此,可以看出三个成员需要的存储空间一样,都为8。根据联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度的特点,我们可知,系统只需为该联合体变量准备8个字节存储空间即可。
    然后,定义了一个结构体,结构体中的成员类型及数组大小与联合体完全一致,即三个成员所需的空间都为8个字节。但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和。因此,该结构体所需的存储空间为24个字节。
    综上所述,我们可以知道程序中的联合体和结构体所需要的存储空间分别为8个字节和24个字节。因此,用sizeof运算符计算这两者的存储空间,输出的结果应该为union=8,struct aa=24,本题正确答案选B。

  • 第8题:

    设有以下说明语句: typedef struct { int n; char ch[8]; }PER; 则下面叙述中,正确的是( )。

    A.PER是结构体变量名

    B.PER是结构体类型名

    C.typedef struct是结构体类型

    D.struct是结构类型名


    正确答案:B
    解析:本题考核用typedef定义自己的变量类型。C++语言允许定义用关键字typedef所命名的新的数据类型。实际上,没有建立一个新的数据类型,而仅是对存在的类型定义了一个新的名字。所定义的新名是现有的类型名的补充,而不是取代。

  • 第9题:

    以下程序的输出结果是______。includestruct stu{int num; char name[10]; int age;};v

    以下程序的输出结果是______。#include<stdio.h>struct stu{ int num; char name[10]; int age;};void fun(struct stu*p){ printf("%s\n",(*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


    正确答案:B

  • 第10题:

    下列关于结构型变量的定义语句中,错误的是( )

    A.typedef struct CCC

    B.define GGG struct { char name[20];GGG CCC { char name[20]; int age; int age; }GGG; }; GGG abc ; GGG CCC abc;

    C.struct

    D.struct { char name[20]; { char name[20]; int age; int age; }ccc; }abc; CCC abc;


    正确答案:C
    分析备选答案A:利用“typedef”定义了用户自定义的数据类型符“GGG”,这个用户自定义的数据类型符是含有两个成员的结构型CCC,所以语句“GGGabc”是定义结构型CCC的变量abc,语法没有错误。分析备选答案B:利用“#define”定义了宏名“GGG”,这个宏名第一次出现是定义结构型CCC,第二次是定义了结构型CCC的变量allc,所以语法上没有错误。分析备选答案C:这是定义一个没有名称的结构型,同时定义了这种结构型的变量CCC,接着的语句“CCCabc;”显然是错误的,因为CCC是变量名,不是数据类型符,该答案符合题意。至于备选答案D:这是标准的通过定义没有名称的结构型来定义该结构型的变量abc,语法上没有错误。

  • 第11题:

    下列对结构及其变量定义错误的是( )。

    A.struct My Struct { int num; char ch; }

    B.struct MyStruct { int num; char ch; }My;

    C.strut { int num; char ch; }My;

    D.struct { int num; char ch; };


    正确答案:D

  • 第12题:

    typedef struct{ int num; char *name; } *vec_ptr; 则在IA32机器上,sizeof(vec_ptr) =()

    • A、4
    • B、8
    • C、12
    • D、16

    正确答案:B

  • 第13题:

    有以下程序includestruct STU{char name[10];int num;};void f(char*name, intnum){s

    有以下程序 #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]={{"YangSan",20041},{"LiSiGuo",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
    解析:题目中定义的函数f()包含两个参数,一个字符指针,—个整型变量。当修改参数指针所指向的内容的时候,实参所指的内容也被修改,即传址调用;但只是修改参数变量的内容,则实奉不受影响,即传值调用。因此,主函数调用f()函数后,第1个参数被修改成函数中s[0]的name成员,第2个参数不受影响,还是主函数中s[1]的num成员。故最终输出SunDan20042。应该选择A。

  • 第14题:

    有以下程序: inClude structNODE{ int num; structNODE*next; }; main() {StructN00E

    有以下程序:

    #inClude <stdlib.h>

    struct NODE{

    int num;

    struct NODE *next;

    };

    main()

    { Struct N00E *p,*q,*r;

    int sum;0;

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

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

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

    p->num=1;q->num=2;r->num=3;

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

    sum+=q->next->num;sum+=p->num;

    printf("%d\n",sum);

    }

    执行后的输出结果是

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题中定义了一个结点structNODE,在主函数中定义了三个结点变量指针p、q和r,接着通过malloc函数分配了三个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的hum域赋值为1、2、3,然后让结点p指向q,让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->num的值为指针p所指向结点的num域的值为1,故最后输出s的值为3+1=4。所以,4个选项中选项B符合题意。

  • 第15题:

    有以下程序: 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的是一个值,而不是地址。

  • 第16题:

    以下对结构体类型变量的定义中,不正确的是( )

    A.typedef struct aa { int n; float m; }AA; AA tdl;

    B.#define AA struct aa AA{ int n; float m; }tdl;

    C.struct { int n; float m; }aa; struct aa tdl;

    D.struct { int n; float m, }tdl;


    正确答案:C

  • 第17题:

    下列程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空。

    include <stdio.h>

    define N 3

    typedef struct

    { int num; char nam[10]; char sex;} SS;

    int fun(SS person[])

    { int i,n=0;

    for(i=0; i<N; i++)

    if(【 】=='M') n++;

    return n;

    }

    main()

    { SS W[N]={{1,"AA",'F'},{2,"BB",'M'},{3,"CC",'M'}}; int n;

    n=fun(W); printf("n=%d\n", n);

    }


    正确答案:person[i].sex
    person[i].sex 解析:本题考查的是对结构体成员的引用,对结构体数组成员的访问是以数组元素为结构体变量的,其形式为结构体数组元素咸员名,所以题目空白处应填person[i].sex。

  • 第18题:

    设有以下说明语句 typedef struct { int n; char ch[8]; }PER;

    A.PER 是结构体变量名

    B.PER 是结构体类型名

    C.typedef struct 是结构体类型

    D.struct 是结构本类型名


    正确答案:B
    解析:本题考核的知识点是如何使用typedef定义新的类型。本题通过typedef在定义一个结构体类型的同时,把它自定义成类型名PER,故PER是结构体类型名。所以,4个选项中B为所选。

  • 第19题:

    以下对结构体类型变量td的定义中,错误的是______。

    A.typedef struct aa { int n; float m; }AA; AA td;

    B.struct aa { int n; float m; }td; struct aa td;

    C.struct { int n; float m; }aa;

    D.struct { int n; float m; }td; struct aa td;


    正确答案:C
    解析: 本题的考点是C语言结构体的定义和自定义类型typedef。对于选项A,首先用typedef将结构体自定义为AA,再用AA定义结构体变量td是正确的。对于选项B首先定义结构体类型aa,再用struct aa定义结构体变量td也是正确的。选项D直接用无名结构体定义结构体变量td也是正确的。而选项C中,首先用无名结构体定义了结构体变量aa,再用结构体变量aa去定义结构体变量td是完全错误的。因此正确选项是C。

  • 第20题:

    以下对结构体类型变量td的定义中,错误的是

    A.typedef struct aa { int n; float m; }AA; AA td;

    B.stmct aa{ int n;float m;}td;stmct aa td;

    C.struct { int n; float m; }aa; struct aa rd;

    D.struct{ int n;float m;}td;


    正确答案:C
    解析:选项A使用typedef语句给结构体aa定义了—个新的名称AA,因此使用AA直接声明结构体变量td是正确的。选项B中,前面一句是定义结构体同时声明了结构体变量td,后一句是使用结构体名sa声明结构体变量td,都是正确的写法。选项C的第1条语句和选项D使用的是无名结构体直接声明变量的语法,是正确的,但是选项C的第2条语句使用已经声明的结构体变量aa来声明td是错误的.故应该选择C。

  • 第21题:

    有以下程序:include struct STU{char name[10]; int num;};void f1(struct STU c){ st

    有以下程序: #include <stdio.h> struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiSiGuo",2042}; c=b; } void f2(struct STU *c) { struct STU b={"SanDan",2044}; *c=b; } main() { struct STU a={"YangSan",2041}, b={"WangYin",2043}; f1(a); f2(&b); printf("%d%d\n",a.num,b.hum); } 执行后的输出结果是( )。

    A.2041 2044

    B.2041 2043

    C.2042 2044

    D.2042 2043


    正确答案:A
    解析:f2函数传递的是变量的地址,可以实现数据的交换,而f1函数传递的是值,调用完f1函数后,c的值改变了,但main函数中的a值并未改变。

  • 第22题:

    有以下程序: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的是一个值,而不是地址。

  • 第23题:

    有以下程序 inGlude struct NODE { int num; struct NODE *next; } main() {struct N

    有以下程序

    #inGlude<stdlib.h>

    struct NODE {

    int num;

    struct NODE *next;

    }

    main()

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

    int sum=0;

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

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

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

    p->num=1;q->num=2;r->num=3;

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

    sum+=q->next->Num,sum+=p->num;

    printf("%d\n",sum);

    }

    执行后输出结果是

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:本题中定义了一个结点struct NODE,在主函数中定义了三个结点变量指针p、q和r,接着通过malloc函数分配了三个结点并让p、q和r分别指向他们,再接着给p、q和r所指向的结点的num域赋值为1、2、3,然后让结点p指向q,让q指向r,r指向NULL。显然q->next->num的值为指针r所指向结点的num域的值为3,p->hum的值为指针P所指向结点的num域的值为1,故最后输出s的值为3+1=4。

  • 第24题:

    单选题
    typedef struct{ int num; char *name; } *vec_ptr; 则在IA32机器上,sizeof(vec_ptr) =()
    A

    4

    B

    8

    C

    12

    D

    16


    正确答案: A
    解析: 暂无解析