练习题及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习题10及参考答案
1. 单项选择题
(1)在声明一个结构体类型时系统分配给它的存储空间是。
A. 该结构体类型中第一个成员所需存储空间
B. 该结构体类型中最后一个成员所需存储空间
C. 该结构体类型中所有成员所需存储空间的总和
D. 结构体类型本身并不占用存储空间,即系统并不给结构体类型分配存储空间【答】D
(2)下列说法不正确的是。
A. 下列结构体声明时,占据了5个字节的空间
struct stru
{
short int a;
short int b;
char c;
}
B. 结构体类型的成员名可以与程序中的变量名相同
C. 结构体类型的成员可以是一个结构体变量
D. 可以单独使用结构体变量中的成员,它的作用相当于普通变量
【答】声明结构体类型时不占据内存空间。本题答案为A。
(3)在定义一个结构体变量时系统分配给它的存储空间是。
A. 该结构体变量中第一个成员所需存储空间
B. 该结构体变量中最后一个成员所需存储空间
C. 该结构体变量中占用最大存储空间的成员所需存储空间
D. 该结构体变量中所有成员所需存储空间的总和
【答】D
(4)下列说法正确的是。
A. 结构体类型的每个成员的数据类型必须是基本类型
B. 结构体类型的每个成员的数据类型都相同,这一点与数组一样
C. 在声明结构体类型时,其成员的数据类型不能是结构体本身
D. 以上说法都不对
【答】D
(5)在定义一个共用体变量时系统分配给它的存储空间是。
A. 该共用体变量中第一个成员所需存储空间
B. 该共用体变量中最后一个成员所需存储空间
C. 该共用体变量中占用最大存储空间的成员所需存储空间
D. 该共用体变量中所有成员所需存储空间的总和
【答】C
(6)以下关于枚举的叙述不正确的是。
A. 枚举变量只能取对应枚举类型的枚举元素表中元素
B. 可以在定义枚举类型时对枚举元素进行初始化
C. 枚举元素表中的元素有先后次序,可以进行比较
D. 枚举元素的值可以是整数或字符串
【答】D
(7)以下关于typedef的叙述不正确的是。
A. 用typedef可以定义各种类型名,但不能用来定义变量
B. 用typedef可以增加新类型
C. 用typedef只是将已存在的类型用一个新的名字来代表
D. 使用typedef便于程序的通用
【答】使用typedef语句并不能创建新的类型,只是给定义的类型取一个新名字。本题答案为B。(8)设有如下定义:
struct stru
{
int x;int y;
};
struct st
{
int x;
float y;
struct stru *p;
} st1,*p1=&st;
以下引用正确的是。
A. (*p1).p.x
B. (*p1)->p.a
C. p1->p->x
D. p1.p->a
【答】C
(9)若有如下声明:
union data
{
char *p;
int n;
};
以下初始化正确的是。
A. union data a="Mary";
B. union data a={"Mary"};
C. union data a=10;
D. union data a={10};
【答】在共用体变量初始化时只能给一个成员赋初值。本题答案为B。
(10)下列用法正确的是。
A. typedef int INTEGER;INTEGER i,m;
B. typedef int char;char t,m;
C. typedef int[4] ARRAY;ARRAY n;
D. 以上都不对
【答】选项A正确;选项B中char为C语言已有的数据类型;选项C应改为:typedef int ARRAY[4];ARRAY n。本题答案为A。
(11)以下程序的运行结果是。
#include
struct node
{
int x;
char c;
};
void func(struct node b);
main()
{
static struct node a={10,'x'};
func(a);
printf("%d,%c\n",a.x,a.c);
}
void func(struct node b)
{
b.x=20;b.c='x';
}
A. 20,x
B. 10,x
C. x,10
D. x,20 【答】func()函数采用传值调用方式,形参的值不会传递到实参。本题答案为B。(12)以下程序的运行结果是。
#include
struct node
{
int x;
char c;
};
void func(struct node *b);
main()
{
static struct node a={10,'x'};
func(&a);
printf("%d,%c\n",a.x,a.c);
}
void func(struct node *b)
{
b->x=20;b->c='x';
}
A. 20,x
B. 10,x
C. x,10
D. x,20 【答】func()函数采用传址调用方式,形参的值会传递到实参。本题答案为A。(13)以下程序的运行结果是。
#include
main()
{
union
{
short int i[2];
long k;
char c[4];
} r,*s=&r;