第七章 结构和模块化设计7.1 结构.ppt

第七章 结构和模块化设计7.1 结构.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 结构和模块化设计7.1 结构

第七章 结构和模块化设计 7.1 结构 复合数据对象的需求 描述由不同类型的数据元素组成的数据对象 例如: 教学管理系统中的学生数据 包括:姓名、性别、学号、班级 语言支持 C 语言中的结构 Pascal 语言中的记录 C++ 、Java 语言中的类 结构定义和变量说明 语法结构 struct 结构名 { 类型 成员变量; 。。。 }; /* 学生信息的结构 */ struct Student { char name[32]; char sex; int no; char class[8]; }; 结构变量说明 struct Student chen; 或直接说明 struct { char name[32]; char sex; int no; char class[8]; } chen; 结构变量及相关运算 结构变量占用的内存空间 大于等于各个元素占用内存空间之和 结构变量的运算 初始化 如:struct Student chen= { “chen”, ‘F’, 24, “9707” }; 赋值 函数参数 结构分量的运算 引用: chen.name chen.sex 运算取决于分量的类型 例7-1:日期的验证 #include stdio.h struct date { int year; /* 年 */ unsigned char month; /* 月 */ unsigned char day; /* 日 */ }; main( ) { int days[ ] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; struct date x; do { scanf( “%d%d%d”, x.year, x.month, x.day ); } while( x.day = 0 || x.day days[x.month] || x.month = 0 || x.month 12 ); /* 出错要求重新输入 */ printf( “It is correct date.\n” ); } 程序读解 结构的使用 分量使用:各种运算、取地址、作为参数; 分量类型:指针、其他结构(不允许递归定义) unsigned char 无符号字符(1个字节:0-255) %d 指示读整数,存到该字节 数组 days 的使用 避免 switch 语句的多分支 执行速度高于 switch 例7-2:洗牌和发牌模拟 任务: 考虑扑克牌的 4 个花色和 52 张,完成洗牌过程,通过输出完成发牌过程 基本思路 设置数据对象保存 52 张牌、4 个花色和牌名信息 产生随机数来控制牌的交换,模拟洗牌过程 输出所有牌,分为 4 组,模拟发牌过程 算法设计 数据对象设计 52张牌 cards[52] 4个花色 suit[4] 13个牌号 face[13] 算法 初始化52张牌 洗牌过程 发牌过程 初始化 依次设置每张牌的花色和牌号 洗牌过程 依次处理每张牌(第 i 张) 产生一个随机数(0-51) j 将第 j 张和第 i 张牌交换 程序结构设计 数据结构 采用 struct 描述扑克牌的信息(花色、牌号) 采用整数数组表示牌号 1, 2, 3, … 13 采用字符数组表示花色 H, D, C, S 程序结构 设置 3 个函数 fillDeck, shuffle, deal 分别负责初始化、洗牌和发牌的完成 程序实现(1/3) #include stdio.h #include stdlib.h #include time.h struct card { int face; char suit; }; main( ) { struct card deck[52]; int face[ ] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; char suit[ ] = { ‘H’, ‘D’, ‘C’, ‘S’ }; srand( time(NULL) ); fillDesk( deck, face, suit ); shuffle( deck ); deal( deck ); } 程序实现(2/3) void fillDeck( struct card deck[ ], int face[ ], char suit[ ] ) { int i; /* 初始化:顺序排列52张牌 */ for( i=0; i52; i++ ) { deck[ i ].face = face[ i%

文档评论(0)

jixujianchi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档