十一章 结构体与共用体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构体与共用体
一、选择题:
1.已知赋值语句wang.year=2004;则wang的变量类型是()
A. 字符或文件
B. 整型或实型
C. 共用或结构
D. 实型或指针
2.Turbo C中,以下类型数据在存储器中占的字节数为 ( ) struct test
{ int x;
float y;
char z;
} ;
A. 2
B. 3
C. 6
D. 7
3.以下语句中,成员data的正确引用方式为( ) struct node
{ int data;
char name[10];
}stree;
struct node *p=&stree;
A. p.data
B. p->data
C. (*p)->data
D. stree->data
4、当执行以下程序段时,输出的结果是。()struct data
{ char a; int b; float c; };
printf(“%d”, sizeof(struct data));
A. 1
B. 2
C. 4
D. 7
5.下面程序段的运行结果是。
struct stu
{ int num; char name[10]; float scrose ; };
printf(“%d\n”, sizeof (struct stu ));
(A)14 (B)12 (C)16 (D)3
6. 若有定义:
typedef char* string;
#define str char *
int a=4;
struct {
int x, *y;
}z={10, &a}, *p=&z;
则下列不等价的是:
A. string name, sign; 与 str name, sign;
B. *p->y++ 与 *(p->y++)
C. ++*p->y 与 ++(*p->y)
D. ++p->x与++(p->x) ()
二、填空题:
1.已知赋值语句zhang.year=1985;可判断zhang是类型的变量;
2.若有类型定义:“typedef union{int a; char b; double c;} share;”
及声明:“float r;”,则表达式:sizeof(r)+sizeof(share)的值是:。
三、看程序写结果:
1、struct atudent
{ int num;
char name[10];
int age;};
main()
{ struct atudent a[2]={{2,”Li”,20}, {2,”zhang”,21}},*p;
p=a;运行结果:
p rintf(“%s\n”, p->name) ; }
2、struct student
{ int num;
运行结果:char name[10];
int age; };
void main( )
{ struct student a[2]={{2,"JACK",20}, {2,"ROSE",21}},*p;
p=a+1;
printf("%s\n", p->name) ; }
四、编程题:
1. 有3个学生信息,放在一个结构体数组中,要求程序实现输入并输出全部学生信息。(本题8分)
(注:学生信息的结构体包括以下几个成员:学号、姓名、性别、年龄。请自己根据实
际应用情况选择适当的数据类型来表示这些成员。)
2、建立一个链表,每个结点信息包括:学号、姓名、性别、年龄。要求建立长度为n 的链表。
3. 设链表的结点只有两个域:一个整形的数值域,一个指针域。编写一函数creatList( ),它用malloc函数,实现创建链表的功能,函数返回的是创建链表的头。(本题12分)
4.编写一个函数new,用于创建一个链表,链表的结点类型定义如下。该链表包含n个结点,函数应返回一个指针,指向指向开始的空间。结点类型与函数原型如下。(本题12分)
链表结点的类型:struct listNode { int data;
struct listNode *next;
}