




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与软件科学学院数学与软件科学学院 实验报告实验报告 学期 2013 至 2014 第 1 学期 2013 年年 1212 月 月 0909 日 日 课程名称 程序设计基础教程 C 语言 专业 数学与应用数学 2012 级 1 班 实验编号 09 实验项目 结构体和共用 指导教师 姓名 学号 实验成绩 一 实验目的一 实验目的及要求及要求 1 掌握C语言环境下结构体和共用体类型变量的定义和使用方法 2 掌握结构体类型数组的概念和使用 3 掌握指向结构体变量的指针变量 尤其是链表概念 二 二 实验内容实验内容 1 首先熟悉结构体类型变量的基本声明方法 结构体类型变量的内存分配 原则 初始化和引用结构体变量及其成员变量的基本方法 然后掌握结构体变 量的输入 输出方法 参见教材例10 1 10 5 2 基于结构体数组的应用实验 1 有n个学生 每个学生的数据包括学好 num 姓名 name 20 性别 sex 年龄 age 以及三门课程的成绩 score 3 要求 在main 函数中输入 这些学生的这些数据 然后设计一个函数count 来计算每个学生的总分和平均 分 最后 打印出所有数据信息 包含原来输入的学生原始数据信息和求解出来 的新信息 2 对第 1 题实验 求出其中成绩最好的人和成绩最差的人 并显示出来 假定成绩最好和最差的人都只有一个 3 如果假定成绩最好和最差的人的个数不一定唯一 程序应该如何修改 才能完成求出所有最好和最差者 以及输出它们来 3 链表实验 1 建立一个链表 每个结点包含 职工号 工资 用malloc 函数开辟新 结点 用free 函数回收不用的结点空间 要求从键盘输入5个员工的数据信息 用create list 然后 用函数output list 将它们一一打印出来 用free list 将 链表中的结点空间回收 假设职工编号为1001 1005 1008 1010 1101 注注 malloc 和free 为系统函数 create list output list free list 为 用户自定义函数 2 在 1 的基础上 新增一个函数inset node 插入员工1006和1032的数据 信息 要求新插入的员工后 员工仍然按职工号顺序排列 3 在 2 的基础上 新增一个函数delete node 可以用来将指定员工的数 据从链表中删除 4 在 3 的基础上 增加回收所删除结点所占内存空间的功能 5 如何查看和测试链表中结点的内存空间地址 能否由此分析 1 2 3 中链表结点的逻辑结构 三 实验准备 三 实验准备 1 1 复习有关结构体方面的所有知识 尤其是10 3 410 3 4节所学的动态存储分 配技术 2 2 编写所选实验题目的程序代码和流程图 3 3 检查源程序并给出其可能的运行结果说明 四 四 实验步骤 实验步骤 1 1 上机验证所选题目的程序设计结果 并做相应测试和分析 2 2 进行实验分析 3 3 总结结构体程序设计和实现的基本方法及其经验 尤其是链表技术 4 4 编写实验报告 五 实验结果分析与评价五 实验结果分析与评价 1 根据测试目标写出测试报告 2 测试结果分析说明 3 测试程序代码清单 1 首先熟悉结构体类型变量的基本声明方法 结构体类型变量的内存分配 原则 初始化和引用结构体变量及其成员变量的基本方法 然后掌握结构体变 量的输入 输出方法 参见教材例10 1 10 5 答 答 1 结构体声明方法 先定义结构体类型 再声明结构体变量 struct 结构体数据类型名 类型标识符 成员变量名 类型标识符 成员变量名 变量名表列 2 结构体类型变量的内存分配原则 其存储空间大小随着成员变量所占存 储空间大小而变化 其存储空间是连续分配的一段存储区域 大小为 成员变量所占存储空间之总和 3 初始化 初始化列表中值的个数少于结构体成员变量个数时 余下的 成员变量自动初始化为0 或NULL 反之 将出现编译型错误 4 引用结构体变量 既可以访问结构体中的成员变量 也可以将结构体 变量作整体引用 5 结构体变量的输入 输出方法 利用scanf 和printf 函数完成 利用gets 和puts 函数完成 例题分析 例题分析 例例10 110 1 测试结构体数据类型测试结构体数据类型studentstudent所占的存储空间长度所占的存储空间长度 程序如下程序如下 include struct student 定义一个结构体 int nStno char cName 20 char cSex int nAge float fScore char cAddr 30 struStud int main void 主函数 主要测试各个结构体的内存大小 int nSizeStud printf size of struStud are d and d n sizeof struct student sizeof struStud nSizeStud sizeof struStud nStno sizeof struStud cName sizeof struStud cSex nSizeStud sizeof struStud nAge sizeof struStud fScore sizeof struStud cAddr printf total size is d n nSizeStud return 0 运行结果如下 运行结果如下 结果分析 结果分析 此例题主要是要我们掌握 结构体的所占的空间长度是怎么样的 Int 占两 个字节 char占一个字节 数组占30个 一共就有59个字节 空间长度就是59 结构体存储空间以所有成员变量所需存储空间大小为分配依据 sizeof 内可以是结构体数据类型标识符 也可以是结构体变量 结果 和计算各成员变量内存空间大小之和一致 注意 sizeof 中 用结构体数 据类型名测试大小必须以数据类型标识符形式表述 否则 编译器将报告 Undefined symbol 结构体数据类型名 in function 错误 例例 10 310 3 输入并输出学生成绩记录输入并输出学生成绩记录 include struct score type 定义一个结构体 int nStno int nAge float fScore int main void 主函数 struct score type struStud 声明一个结构体 printf enter nStno nAge fScore scanf d d f printf nStno d nAge d fScore 1f n struStud nStno struStud nAge struStud fScore return 0 运行结果 运行结果 Enter nStNo nAge fscore 1 20 95 5 nStNo 1 nAge 20 fScore 95 5 结果分析 结果分析 对结构体成员变量的访问用圆点操作符 它被称为成员操作符 圆点运 算优先级最高且是自左向右的结合 其具体格式如下 结构体变量名 成员变量 名 它表示要访问结构体变量下的成员变量名域 由于取地址操作符优先级低 于圆点操作符 对成员变量地址的引用可以不加括号 然后还要注意在结构体 定义完成后要记住加分号 2 基于结构体数组的应用实验 1 有n个学生 每个学生的数据包括学号 num 姓名 name 20 性别 sex 年龄 age 以及三门课程的成绩 score 3 要求 在main 函数中输入这些学 生的这些数据 然后设计一个函数count 来计算每个学生的总分和平均分 最 后 打印出所有数据信息 包含原来输入的学生原始数据信息和求解出来的新信 息 程序如下程序如下 include include define STUD NUM 2 宏定义 struct stud info 定义一个结构体 int num char name 20 char sex int age int score 3 void stud gets struct stud info studPtr const int no 声明外部函数 void stud input struct stud info stud arr const int num void stud output const struct stud info stud arr const int num void stud gets struct stud info studPtr const int no 分别定义 int j h char cTemp 10 printf The no d s info is n no printf num gets cTemp studPtr num atoi cTemp for h 0 hname h 0 printf name gets studPtr name printf sex studPtr sex getchar getchar printf age scanf d getchar printf n score for j 0 jscore j getchar void stud input struct stud info stud arr const int num int i struct stud info studPtr stud arr printf Please input students info n printf num name sex age score n for i 0 i num studPtr i stud gets studPtr i 1 return void stud output const struct stud info stud arr const int num int i struct stud info studPtr studPtr stud arr printf Information of the students are n printf nnum name sex age score n for i 0 inum studPtr name studPtr sex studPtr age studPtr score 0 studPtr score 1 studPtr score 2 return void count const struct stud info stud arr const int num int i snum ave max char pt struct stud info studPtr stud arr for i 0 iscore 0 studPtr score 1 studPtr score 2 ave snum 3 if i 0 max snum pt studPtr name else if maxname printf n nthe d s score is d n ave is d num snum ave printf n n nthe best is for i 0 i 20 i if pt i 0 printf c pt i return int main void struct stud info studArr STUD NUM clrscr stud input studArr STUD NUM stud output studArr STUD NUM count studArr STUD NUM return 0 运行结果如下 运行结果如下 分析 分析 程序分成六个模块 分别是结构体 struct stud info void stud gets void stud input void stud output void count main void 这 六个模块 程序首先声明了一个宏体 学生个数 然后进行了结构体的定义 学生信息结构 然后是构造获得学生信息的程序 输入三个学生信息 然 后是输出程序 输出三个学生的信息 最后是主控制模块 此程序要求很高 首先是要熟悉结构的的基本结构其次要有清晰的思路 用模块的思想来完成题 目 你还考了一维结构体数组名或指针引用 一维数组元素的地址引用 还有 一维结构体数组的成员变量的地址引用 实验心得实验心得 1 对结构体数据类型 要注意以下问题 1 成员变量名必须唯一 2 除声明初始化外 不能对结构体变量作整体输入输出和常量整体赋值 3 结构体数据类型可以嵌套定义 4 成员变量有独立的存储空间 2 对共用体数据类型 要注意以下问题 1 存储空间以存储空间最大的成员变量为准 2 任何时刻只有一个成员变量有效 3 共用体及其成员变量共享同一段存储空间 其地址相同但意义不同 3 枚举类型要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学科学教育专业题库- 大学科学实践教育与学生专业素养的提升路径探讨
- 2025年消防安全隐患排查考试题库:安全教育培训实战试题
- 2025年残疾人管理试题及答案
- 2025年商务英语(BEC)中级考试真题模拟卷商务信函与报告写作训练
- 2025年大学科学教育专业题库- 科学实验教育与学科思维培养
- 2025年资产评估师职业资格考试真题模拟卷:资产评估相关法律知识试题
- 2025年大学科学教育专业题库- 科学教育的教学有效性研究
- 2025年大学警卫学专业题库-校园安全巡逻工作流程
- 2025年安全生产风险分级管控安全技能试题集
- 2025年大学工会学专业题库- 工会对职场多元化与包容性的促进作用研究
- 重症胰腺炎护理查房
- 共青团入团团章知识考试题库300题(含答案)
- 老旧护栏加固施工方案
- 2025年青海海东通信工程师考试(通信专业实务终端与业务)高、中级考前题库及答案
- 露天煤业安全生产培训课件
- 2025年全国医学基础知识试题(附答案)
- 食堂安全培训课件
- 【课件】角的概念+课件+2025-2026学年人教版(2024)七年+数学级上册+
- 2025年防雷检测专业技术人员能力认定考试题库及答案
- 《房屋市政工程生产安全重大事故隐患判定标准(2024版)》解读
- 美发裁剪理论知识培训课件
评论
0/150
提交评论