第7章 自定义数据类型习题
一.选择题:
1.    当定义一个结构体变量时,系统分配给它的内存空间是【 】。
    A)    结构中一个成员所需的内存量        B)    结构中最后一个成员所需的内存量
    C)    结构体中占内存量最大者所需的容量  D) 结构体中各成员所需内存量的总和
2.    若有以下说明,对初值中整数2的正确引用方式是【 】。
static struct
{
  char ch;
  int  i;
  double  x;
} a[2][3]={{‘a’,1,3 .45,’b’,2,7.98,’c’,3,1.93I}
        {‘d’,4,4.73,’e’,5,6.78,’f’,6,8.79 }};
    A) a[1][1].i    B) a[0][1].i    C) a[0][0].i    D) a[0][2].i
3.    根据以下定义,能打印字母M的语句是【 】。
struct  p
{
  char name[9];
  int age;
}c[10]={“Jobn”,17,”Paul”,19,”Mary”,18,”Adam”,16};
    A) printf(“%c”,c[3].name);      B) printf(“%c”,c[3].name[1]);
    C) printf(“%c”,c[2].name);      D) printf(“%c”,c[2].name[0]);
4.    以下说明和语句中,已知int型数据占两个字节,则以下语句的输出结果是【 】。
struct st
{
  char a[l0];
  int  b;
  double c;
};
printf(“%d”,sizeof(struct  st));
      A) 0            B) 8          C) 20          D) 2
5.    以下说明和语句中,对结构体变量std中成员id的引用方式不正确的是【 】。
struct  work
{
  int id;
  int name;
} std, *p;
p=&std;
      A) std.id          B) *p.id          C) (*p).id          D) &std.id
6.    如设有如下定义,若要使px指向rec中的成员x,正确的赋值语句是【 】。
    struct  aa
    {int x;
    float y;
    }rec, *px;
  A)    *px=rec.x;                    B)    px=&rec.x
  C)    px=(struct aa*)rec.x;        D)    px=(struct aa*)&rec.x;
7.    下列程序的输出结果是【 】。
#include<stdio h>
main()
{
  struct date
  {
      int y,m,d;
  };
    union
  {
      long  i;
      int  k;
      char ii;
  }mix;
  printf(“%d,%d\n”,sizeof(struct date),sizeof(mix));
}
      A) 6,2    B) 6,4    C) 8,4    D) 8,6
8.    设有以下结构体定义,若要对结构体变量p的出生年份赋值.下面正确的语句是【 】。
    struct date
    {int y;
    int m;
    int d;
    }
    struct worklist
    { char name[20];
      char sex;
  struct date birthday;
  } p;
    A)    y=1976;              B)    birthday.y=1976;
    C)    p.birthday.y=1976;    D)    p.y=1976;
9.    若有以下说明语句:
    struct p
    { char name[20];
      int age;
      char sex;
    }a={“li ming”,20,‘m’},p=&a;
  则对字符串“li ming”的错误引用方式是【 】。
  A)    (*p).name              B)    *p.name     
  C)    a.name              D)    p.name
10.当说明一个联台体变量时,系统分配给它的内存为【 】。
    A) 联台体中的一个成员所需的内存量
    B) 联台体中最后一个成员所需的内存量
    C) 联台体体中占内存量最大者所需容量
    D) 联台体中各成员所需内存量的总和
11.设有以下说明,则下面不正确的叙述是【 】。
union data
{
  int I;
  char c;
  float f;
}a;
    A)  a所占的内存长度等于成员f的长度
    B)  a的地址和它的各成员地址都是同一地址
    C)  a可以作为函数参数
    D)  不能对a赋值,但可以在定义a时对它初始化
12.下面程序的运行结果是【 】。
main()
{
  union  u
  {
    char  *name;
    int age;
int income;
  }s;
  s.name=”wanghong”;
  s.age=26;
  s.income=2000;
  printf(“%d\n”,s.age);
}
      A)    8            B)    1000           
C)    0            D)    不确定
13.已知字符0的ASCII码为十六进制的30,下面程序的输出为【 】。
main()
{
  union
  {
    char c;
    unsigned  int a[4];
  }z;
  z.a[0]=0x39;
  z.a[l]=0x36;结构体sizeof
  printf(“%c\n”, z.c);
}
      A)    6                B)    9           
C)    0                D)    3
14.    若定义共用(联合)体数据类型如下.
union
  int  a;
  int  b;
} x,y;
  执行语句x.a=3;x.b=4;y.b=x.a*2;后,则y.a的值为【 】。
A)    3      B)    4      C)    6          D)    8
15.定义以下结构体数组
struct date
{
  int year;
  int month;
};
struct s
{
  struct date birth;
  char name[20];
}x[4]={{2010,8,"Beijing"},{1999,9,"Nanjin"}};
语句printf("%s,%d",x[0].name, x[0].h);的输出结果为【 】。
A)  Beijing,8                        B)  Nanjin,9
C)  Beijing,2010                D)  Nanjin,1999
16.运行下列程序段,输出结果是【 】。
struct  country
{
  int num;
  char name[20];
  }x[5]={1,”china”,2,”USA”,3,”France”,4,”England”,5,”Spanish”};
  struct  country  *p;
  p=x+3:
  printf(“%d,%c",*p.num,(*p)name[2]);
          A)    3,a          B)    4,g          C)    2,U          D)    5,S
17.在以下程序段中,已知int型数据占两个字节,则输出结果是【 】。
union un
{
  int  I;
  double y;
}
struct st

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