软件学院专业课集训营资料-结构体与共用体专项练习题
1. 设有以下说明语句:
struct ex
{ int x;
  float y;
  char z;
} example;
则下面的叙述中不正确的是
A. struct是结构体类型的关键字         B. example是结构体类型名
C. x,y,z都是结构体成员名           D. struct ex是结构体类型名
2. 设有以下说明语句
typedef struct data
{ int n;
  char ch[8];
} PER;
则下面叙述中正确的是
A. struct data是结构体变量名            B. PER是结构体类型名
C. typedef struct 是结构体类型            D. struct 是结构体类型名
3. 在程序VC6.0下,若有如下定义:
struct data
{ int i;
  char ch;
  double f;
} b;
则结构体变量b占用内存的字节数是
A. 13                B. 3                C. 8                D. 11
4. 以下程序在VC6.0下的运行结果是
#include <stdio.h>
main()
{ struct date
  { int year,month,day; }today;
printf("%d\n",sizeof(struct date)); }
A. 6                 B. 8                 C. 10                 D. 12
5. 设有如下定义:
struct sk
{ int a;
  float b;
} data,*p;
若有p=&data,则对data中的成员a的正确引用是
A. (*p).data.a   B.(*p).a         C. p->data.a       D. p.data.a
6. 以下对结构体变量stu1中成员age非法引用的是
struct student
{ int age;
int num;
}stu1,*p=&stu1;
A. stu1.age         B. student.age         C. p->age             D.(*p).age
7. 有以下说明和语句:
struct worker
{ int no;
  char *name;
} work,*p=&work;则以下引用方式不正确的是
A          B. (*p).no          C. p->no              D. work->no
8. 已知有如下定义:
struct a
{ char x;
  double y;
} data,*t;,若有t=&data,则对data中的成员的正确引用是
A. (*t).data.x        B. (*t).x            C. t->data.x        D. t.data.x
9. 设有如下定义:
struck sk
{ int a;
  float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是
A. p=&a;            B. p=data.a;        C. p=&data.a;        D. *p=data.a;
10. 下列程序的输出结果是
#include <stdio.h>
struct abc
{ int a,b,c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}};
  int t;
  t=s[0].a+s[1].b;
  printf("%d \n", t);
}
A. 5             B. 6             C. 7             D. 8
11. 下面程序的运行结果是
#include <stdio.h>
main()
{ struct cmplx
  { int x;
    int y;
  } cnum[2]={1,3,2,7};
  printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); }
A. 0                 B. 1                 C. 3                 D. 6
12. 若有以下说明和语句,则下面表达式中的值为1002的是
struct student
{ int num;
int age;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
struct student *p;
p=stu;
A.(p++)->age        B.(++p)->num        C.(*p).num            D.(*++p).age
13. 根据下面的定义,能打印出字母M的语句是
struct person
{ char name[9];
  int age;
};
struct person class[10]={"John",17,"Paul",19,"Mary"18,"adam",16};
A. printf("%c\n",class[3].name[0]);        B. printf("%c\n",class[3].name[1]);
C. printf("%c\n",class[2].name[1]);        D. printf("%c\n",class[2].name[0]);
14. 若有以下程序段:   
#include <stdio.h>
struct dent
{ int n;
  int *m;
};
int a=1,b=2,c=3;
struct dent s[3]={{101,&a},{102,&b},{103,&c}};
main()
{ struct dent *p;
p=s; ……
}
则以下表达式值为2
A. (p++)->m          B. *(p++)->m          C. (*p).m          D. *(++p)->m
15. C语言结构体类型变量在程序执行期间
A. 所有成员一直驻留在内存中                B. 只有一个成员驻留在内存中
C. 部分成员驻留在内存中                    D. 没有成员驻留在内存中
16. C语言共用体类型变量在程序运行期间
A. 所有成员一直驻留在内存中                B. 只有一个成员驻留在内存中
C. 部分成员驻留在内存中                    D. 没有成员驻留在内存中
17. 在说明一个联合体变量时,系统分配给它的存储空间是
A. 该联合体中第一个成员需存储空间
B. 该联合体中最后一个成员所需存储空间
C. 该联合体中占用最大存储空间的成员所需存储空间
D. 该联合体中所有成员所需存储空间的总和
18. 以下程序在VC6.0下的运行结果是
#include <stdio.h>
main()
{ union
  { long a;
    int b;
    char c;
  } m;
printf("%d\n",sizeof(m)); }
A. 2                 B. 4                 C. 6                 D. 8
19. 以下程序的输出结果是
#include <stdio.h>
union myun
{ struct
  { int x,y,z; } u;
  int k;
} a;
main()
{ a.u.x=4;
  a.u.y=5;
  a.u.z=6;
  a.k=0;
  printf("%d\n", a.u.x);
}
A. 4             B. 5             C. 6             D. 0
20. 结构体变量成员的引用方式是使用          运算符
21. 结构体指针变量成员的引用方式是使用            运算符。
22. struct student{ int no;char name[12];float score[3];} s1,*p=&s1;
用指针法给s1的成员no赋值1234的语句是             
23. 运算符sizeof是求变量或类型的          typedef的功能是                sizeof 指针。
24. C语言可以定义枚举类型,其关键字为         
25. 设在VC6.0下若有结构体类型说明和变量定义,则变量a在内存中所占的字节数是          ,变量p在内存中所占的字节数是         
struct stud
{ char num[6];int s[4];double ave;
} a,*p;
26. 在程序VC6.O下,设union student { int n;char a[100]; } b; sizeof(b)的值是         
27. 在程序VC6.O下,若有以下定义和语句,则sizeof(a)的值是          ,而sizeof(a.share)的值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。