冯山C语言第六章作业答案,C语言四川师范大学信息与计算科学冯山实验九课案.docx...

数学与软件科学学院实验报告

专业

专业:信息与计算科学指导教师:冯山

2014060634

课程名称:C语言程序设计 实验编号:实验九 姓名:杨帆学号:

2015年6月16日

2014 级6班

实验得分

一、实验目的及要求

掌握C语言环境下结构体和共用体类型变量的定义和使用方法;

掌握结构体类型数组的概念和使用;

掌握指向结构体变量的指针变量、尤其是链表概念;

二、实验内容

1.首先熟悉结构体类型变量的基本声明方法、 结构体类型变量的内存分配原 则、初始化和引用结构体变量及其成员变量的基本方法; 然后掌握结构体变量的 输入、输出方法。(参见教材例10-1~10-5)

2■基于结构体数组的应用实验。

有n个学生,每个学生的数据包括学好(num卜姓名(name[20])、性别(sex)

年龄(age),以及三门课程的成绩(score[3]。要求:在main()函数中输入这些学生 的这些数据,然后设计一个函数count(来计算每个学生的总分和平均分,最后, 打印出所有数据信息(包含原来输入的学生原始数据信息和求解出来的新信息)。

对第⑴题实验,求出其中成绩最好的人和成绩最差的人,并显示出来。(假 定成绩最好和最差的人都只有一个)

*如果假定成绩最好和最差的人的个数不一定唯一,程序应该如何修改才 能完成求出所有最好和最差者,以及输出它们来。

3.*链表实验。

建立一个链表,每个结点包含:职工号、工资。用 malloc()函数开辟新结 点,用free()函数回收不用的结点空间。要求从键盘输入 5个员工的数据信息(用 create_list()),然后,用函数 output_list()<它们一一打印出来,用free_list()将链 表中的结点空间回收。假设职工编号为 1001,1005,1008,1010,1101

注意:malloc(和free()为系统函数。create_list(), output_list(), free_list() 为用户自定义函数。

在(1)的基础上,新增一个函数inset_node(插入员工1006和1032的数据信 息。要求新插入的员工后,员工仍然按职工号顺序排列。

在⑵的基础上,新增一个函数delete_node()可以用来将指定员工的数 据从链表中删除

在⑶的基础上,增加回收所删除结点所占内存空间的功能。

*如何查看和测试链表中结点的内存空间地址?能否由此分析(1)、2)、3)

中链表结点的逻辑结构?

三、实验步骤

⑴上机验证所选题目的程序设计结果,并做相应测试和分析;

进行实验分析;

总结结构体程序设计和实现的基本方法及其经验,尤其是链表技术;

编写实验报告

四、实验结果及分析

1、结构体类型变量的初始化 形式一:

struct结构体名

类型标识符成员名;

类型标识符成员名;

};

struct 结构体名结构体变量={初始数据}; 形式二:

struct结构体名

类型标识符成员名;

类型标识符成员名;

}结构体变量={初始数据};

形式三:

struct

类型标识符成员名;

类型标识符成员名;

}结构体变量={初始数据};

1.教材例10-1的源程序:

#inclijde

struct student

(

int nStNo;

char cName[20l;

char cSex;

lrit nflge;

float fScorei

char cfiddr[30l;

} struStud;

int naiFi(void)

(

int nSizeStud;

printf["size of struStud are 加I and KdAn'^sizeof(struct student),sizeof( nSizeStud=sizeof [striiStud-nStNo)+sizeof(struStiid,cNapie)+sizeof(struStii(LcS nSizeStud+=sizeofEstruStud.nAge)+sizeof(struStud,fScore)+sizeof(struStucLc printf[HTotal size is K^n^nSizeStud);

return 0;

输出结果:

size of struStud are 59 and 59. Tot日1 size is 59

结果分析:第一个输出语 句表明sizeof()弧括号内 既可以是结构体数据类 型标识符 structstudent;也可以是结构体变量strustud;其测试输出结果和计算各成员变量所占内存空间

大小之和是一致的。

流程图如下:prin tf("size of struStud are %dand %d.\n",sizeof(stru

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值