2013  结构体与联合体习题
选择题
1、若程序中有以下的说明和定义:
struct abc
{ int x;char y; }                花括号后少了分号。
struct abc s1,s2;
则会发生的情况是______   
A) 编译时错                                B) 程序将顺序编译、连接、执行
C) 能顺序通过编译、连接、但不能执行        D) 能顺序通过编译、但连接出错
2、有以下程序段
struct st
{  int x;  int *y;}*pt;
int a[]={1,2};b[]={3,4};
struct st  c[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是
A) *pt->y                B) pt->x            C) ++pt->x            D) (pt++)->x
3、有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是______
A) (p++)->num        B) p->num        C) (*p).num            D) stu[3].age
4、设有如下枚举类型定义
    enum language {Basic=3,Assembly=6,Ada=100,COBOL,Fortran};
枚举量Fortran的值为______
A) 4                    B) 7                C) 102                D) 103                                                                                                                                                                                                                                 
5、以下叙述中错误的是_________
A)可以通过typedef增加新的类型
B)可以用typedef将已存在的类型用一个新的名字来代表
C)typedef定义新的类型名后,原有类型名仍有效
D)typedef可以为各种类型起别名,但不能为变量起别名
6、有以下程序段
    typedef  struct NODE
    { int  num;        struct NODE  *next;
    } OLD;
以下叙述中正确的是
    A)以上的说明形式非法                B) NODE是一个结构体类型
    C) OLD是一个结构体类型                D) OLD是一个结构体变量
7、以下选项中不能正确把cl定义成结构体变量的是______
1typedef struct
    {int red;
    int green;
    int blue;
    } COLOR;
  COLOR cl;
2struct color cl
    { int red;
      int green;
      int blue;
    };
3struct color
    { int red;
      int green;
      int blue;
    }cl;
4struct
    {int red;
    int green;
    int blue;
    }c1;
A) 1                B) 2                C) 3                D) 4
8、设有以下语句
typedef  struct  S
sizeof结构体大小{  int g; char  h;} T;
则下面叙述中正确的是______
A)可用S定义结构体变量
B)可以用T定义结构体变量
C) Sstruct类型的变量
D) Tstruct S类型的变量
9、设有如下说明
typedef struct ST 
{long a;int b;char c[2];} NEW;
则下面叙述中正确的是_____
A)以上的说明形式非法
B) ST是一个结构体类型
C) NEW是一个结构体类型   
D) NEW是一个结构体变量
10、以下对结构体类型变量td的定义中,错误的是______
A) typedef struct aa                    B) struct aa
  { int n;                              { int n;
    float m;                                float m;
  }AA;                                };
  AA td;                              struct aa td;
C) struct                            D) struct
  { int n;                                { int n;
    float m;                                float m;
  }aa;                                  }td;
  struct aa td;
11、根据下面的定义,能打印出字母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);            B) printf("%c\n",class[3].name[1]);
C) printf("%c\n",class[2].name[1]);        D) printf("%c\n",class[2].name[0]);
12、设有以下语句:
  struct st {int n; struct st *next;};
  static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
  p=&a[0];
则表达式    的值是6。
A) p++ ->n        B) p->n++        C) (*p).n++        D) ++p->n
13、下面程序的输出结果为   
struct st
{ int x;
  int *y;
} *p;
int dt[4]={10,20,30,40};
struct st aa[4]={ 50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] };

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