第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小时内删除。
发表评论