10.1.5 若有定义:
struct num {
int a ; int b ; float f ; }n={1,3,5.0};
struct num *pn=&n ;
则表达式pn->b/n.a*(++pn->b)的值是 12 , 表达式(*pn).a+pn->f的值是 6.00000 。
10.1.6 C语言可以定义共用体类型,其关键字为 union 。
10.1.7 C语言允许用 typedef 声明新的类型名来代替已有的类型名。
10.1.8 链表中,每个结点包括两个部分:一个是存储数据元素的 数据域 ,另一
个是存储下一个结点地址的 指针域 。
10.1.9 相比于线性表顺序结构,链表比较方便 插入 和 删除 操作。 10.1.10 常用的内存管理函数有 malloc 、 calloc 、 free 。 10.2 选择题
10.2.1 有如下说明语句,则下面叙述不正确的是 。
struct stu {
int a ; float b ; }stutype;
A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 10.2.2 以下对结构类型变量的定义中不正确的是 。
A)#define STUDENT struct student B)struct student STUDENT { { int num;
int num ; float age ; float age;
}std1 ; }std1;
C)struct { D)struct {
int num ; int num ; float age ;
float age ; }student;
} std1 ; struct student std1 ;
10.2.3 当定义一个结构体变量时,系统分配给它的内存是 。
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大的容量 D)结构中最后一个成员所需内存量 10.2.4 已知学生记录描述为:
struct student
{
int no ; char name[20]; char sex; struct {
int year; int month ; int day ; } birth ;
} s ;
设结构变量s中的“birth”应是“1985年10月1日”,则下面正确的赋值方式是 。
A)year=1985 B)birth.year=1985 month=10 birth.month=10 day=1 birth.day=1
C)s.year=1985 D)s.birth.year=1985 s.month=10 s.birth.month=10 s.day=1 s.birth.day=1 10.2.5 下面程序的运行结果是 。
main ( ) {
struct complx { 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)2 D)6 10.2.6 以下对结构体变量成员不正确的引用是 。
struct pupil {
char name[20]; int age; int sex ; } pup[5], *p=pup ;
A)scanf(“%s”,pup[0].name); B)scanf(“%d”,&pup[0].age);
C)scanf(“%d”,&(p->sex)); D)scanf(“%d”,p->age); 10.2.7 若要利用下面的程序段使指针变量p指向一个存储整型变量的存储单元,则
在【】中应有的内容是 。 int *p ; p = 【】malloc(sizeof(int));
A)int B)int * C)(*int) D)
(int*)
10.2.8 当定义一个共用体变量时,系统分配给它的内存是 。
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大的容量 D)结构中最后一个成员所需内存量 10.2.9 以下对C语言中共用体类型数据的叙述正确的是 。
A)可以对共用体变量直接赋值
B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员 10.2.10 下面对typedef的叙述中不正确的是 。
A)用typedef可以定义多种类型名,但不能用来定义变量 B)用typedef可以增加新类型
C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植