C语言程序设计上机指导与同步训练 A)ppup.sex B)p->pup.sex C)(p).pup. sex D)(p).sex 3.若有以下程序段: iint int a=l, b=2,C=3 struct dent s[3]={{101,&a},{102,b},{103,&c}}; 则以下表达式中值为2的是()。 A)(p++}>m *(p++)>m C)(p).m D)*(++p)>m 编程题 1.定义一个能正常反映教师情况的结构体 teacher,包含教师姓名、性别、年龄、所在部 门和薪水;定义一个能存放两人数据的结构体数组tea,并用如下数据初始化 {"Mary“,W,40, Computer',1234},{“Andy“,"M’s, nglish’,1834};要求:分别 用结构体数组tea和指针p输出各位教师的信息,写出完整定义、初始化、输出过程: 2.有5个学生,每个学生的数据包括学号(num),姓名(name),总成绩( score)编程实 现从键盘输入5位学生数据,按总成绩由高到低排序,输出排序后的学号、姓名、总成绩(为 了简化问题,提示同学们可以将总成绩定义为int;另,在排序交换时,不能只交换总成 绩变量值)。 第2讲 知识归纳 1.链表概述 (1)链表有一个“头指针”变量:他存放链表第一个结点的地址 (2)链表中每一个元素称为一个结点,每个结点都包括两部分:一个是数据域:一个 是指针域:数据域用来存放用户数据,指针域用来存放下一个结点的地址。 (3)链表的最后一个结点的指针域常常设置为NUL(空,表示链表到此结束 (4)常常用结构体变量作为链表中的结点。 2.链表的操作 (1)链表的静态创建 (2)链表的动态创建 三个函数:
·260· C 语言程序设计上机指导与同步训练 ·260· A) p.pup.sex B) p->pup.sex C) (*p).pup.sex D) (*p).sex 3. 若有以下程序段: struct dent { int no; int *m; }; int a=1,b=2,c=3; struct dent s[3]={{101,&a},{102,&b},{103,&c}}; main() { struct dent *p; p=s; … } 则以下表达式中值为 2 的是( )。 A) (p++)->m B) * (p++)->m C) (*p).m D) *(++p)->m 三、编程题 1. 定义一个能正常反映教师情况的结构体 teacher,包含教师姓名、性别、年龄、所在部 门和薪水;定义一个能存放两人数据的结构体数组 tea,并用如下数据初始化: {{“Mary “, ‘W’,40, ‘Computer’ , 1234 },{“Andy “, ‘M’,55, ‘English’ , 1834}} ;要求:分别 用结构体数组 tea 和指针 p 输出各位教师的信息,写出完整定义、初始化、输出过程; 2. 有 5 个学生,每个学生的数据包括学号(num) , 姓名(name) , 总成绩(score) ,编程实 现从键盘输入 5 位学生数据,按总成绩由高到低排序,输出排序后的学号、姓名、总成绩(为 了简化问题,提示同学们可以将总成绩定义为 int ;另,在排序交换时,不能只交换总成 绩变量值)。 第 2 讲 知识归纳 1. 链表概述 (1) 链表有一个“头指针”变量;他存放链表第一个结点的地址。 (2) 链表中每一个元素称为一个结点,每个结点都包括两部分:一个是数据域;一个 是指针域;数据域用来存放用户数据,指针域用来存放下一个结点的地址。 (3) 链表的最后一个结点的指针域常常设置为 NULL (空), 表示链表到此结束。 (4) 常常用结构体变量作为链表中的结点。 2. 链表的操作 (1) 链表的静态创建。 (2) 链表的动态创建。 三个函数:
第二部分¢语言程序设计同步训练 61 calloc(函数 格式:void* malloc( unsigned int size) 功能:在内存的动态存储区中分配1个长度为size的连续空间。 函数的返回值:申请存储空间成功,返回申请的存储空间的起始地址,申请不成功, 回Nul 函数 Fr: vod calloc(unsigned n, unsigned int size 功能:在内存的动态存储区中分配n个长度为size的连续空间。 函数的返回值:申请存储空间成功,返回申请的存储空间的起始地址,申请不成功返 回NULL fre6(函数: free(函数: 格式: void free(void) 功能:释放由p指针指向的内存区,使这部分内存区能被其他变量使用 Free函数无返回值 基础训练(A 、填空题 1.链表有一个“头指针”变量,专门用来存放 2.常常用结构体变量作为链表中的结点,每个结点都包括两部分:一个是 一个是 3.链表的最后一个结点的指针域常常设置为 表示链表到此结束; 4.为建立如图所示的存储结构(即每个节点两个域,data是数据域,next是指向节点的 指针域,请将定义补充完整)。 (char da 5.以下静态建立一个有2个学生数据的链表,并输出各结点中的数据 #include NULL 0 # include“ stdio.h struct student float score struct student link;
第二部分 C 语言程序设计同步训练 ·261· ·261· malloc( )函数: 格式: void *malloc(unsigned int size); 功能:在内存的动态存储区中分配 1 个长度为 size 的连续空间。 函数的返回值:申请存储空间成功,返回申请的存储空间的起始地址,申请不成功, 返回 Null calloc( )函数: 格式:vod * calloc(unsigned n,unsigned int size); 功能:在内存的动态存储区中分配 n 个长度为 size 的连续空间。 函数的返回值:申请存储空间成功,返回申请的存储空间的起始地址,申请不成功返 回 NULL free( )函数: free ()函数: 格式:void free(void *p) 功能:释放由 p 指针指向的内存区,使这部分内存区能被其他变量使用。 Free 函数无返回值。 基础训练(A) 一、填空题 1. 链表有一个“头指针”变量,专门用来存放___________________________。 2. 常常用结构体变量作为链表中的结点,每个结点都包括两部分:一个是 ___________;一个是________________。 3. 链表的最后一个结点的指针域常常设置为__________, 表示链表到此结束; 4. 为建立如图所示的存储结构(即每个节点两个域,data 是数据域,next 是指向节点的 指针域,请将定义补充完整)。 data next struct node {char data; _______________________; } v1 ; 5. 以下静态建立一个有 2 个学生数据的链表,并输出各结点中的数据。 #include NULL 0 #include “stdio.h” struct student { int num ; float score ; struct student * link; };