- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例4-4】成绩统计。 使用结构体数组,保存一个班级(不超过100人)的三门课程的成绩。每个数组元素记录一个人的学号、姓名及高等数学、英语、程序设计等三门课程的成绩和平均成绩。每个人的信息从键盘输入,输入全0信息表示结束(以姓名为”0”作为判别依据),平均成绩自动计算,对成绩进行从大到小排序后输出。 【问题分析】 * 插入排序的算法 ①设待排序元素用数组A[i]表示,i=0,1,...,N-1; ②对i=1,N-1 //控制N-1次插入,每次插入的元素为A[i] ③ tmp=A[i] //把A[i]保存在临时变量tmp中 ④ 对j=i-1,i-2,...,0 //与前面i个元素比较 若tmpA[j],则 //小于前面的元素, A[j+1]=A[j] //前面元素后移 否则 //不小于前面的元素 转⑤ ⑤ A[j]=tmp //放在当前j指位置 ⑥结束 //N-1次插入后结束 * 【算法描述】 ①定义相应的变量、数组,N=0; ②输入第N+1个人的信息(平均成绩不输入); ③如果姓名是”0”,转⑥;否则,继续④; ④计算平均成绩; ⑤N=N+1; ⑥排序; ⑦通过循环,按数组的顺序输出每个人的信息。 ⑧结束。 * 【源程序】 #include iostream #includecstring using namespace std; //结构体的定义 struct Student //结构体Student { char number[10];//学号 char name[20]; //姓名 float score[3];//三门课程成绩 float average;//平均成绩 }; //注意最后的分号 * 4.3取有限值的特征的描述——枚举 性别的取值为{男,女} 方向的取值为{东,南,西,北} 星期的取值是{Sun, Mon,Tes, Wed,Thu, Fri,Sat} 表示? 限制? 运算? * 1.枚举类型的定义 枚举类型的定义格式为: enum 枚举类型名{枚举常量表}; 枚举元素 enum Color{RED,YELLOW,BLUE,WHITE,BLACK}; enum Week{Sun,Mon,Tes,Wed,Thu,Fri,Sat}; enum Coin{PENNY=1,NICKEL=5,DIME=10,QUARTER=25 HALF_DOLLAR=50,DOLLAR=100}; enum Color{RED,YELLOW,BLUE=1,WHITE,BLACK}; enum Week{Sun=7,Mon=1,Tes,Wed,Thu,Fri,Sat}; * 注意,枚举常量实际是以标识符形式表示的整型量而不是字符串,或字面常量 enum Selection{ {A,B,C,D}; 错误 enumb Year={2015,2016,2017,2018,2019,2020};错 * 2.枚举变量的声明 enum 枚举类型名 枚举变量列表; enum COLOR background,foreground; Week begin,end; enum Week{Sun=7,Mon=1,Tes,Wed,Thu,Fri,Sat}begin,end; enum {Sun=7,Mon=1,Tes,Wed,Thu,Fri,Sat}begin,end; * 3.枚举变量的使用 ①可以将枚举常量或相同类型的枚举变量赋值给枚举变量; ②不允许将整数赋给枚举变量,但可以使用强制类型转换后赋给枚举变量; ③不用类型的枚举变量之间不能相互赋值; ④可将枚举变量、常量赋值给整型变量; ⑤枚举变量可以参加数学运算,结果是数值型; ⑥枚举变量不能直接输入; ⑦枚举变量可以直接输出,但输出的是变量的整数值,而不是枚举常量名; * 【例4-5】枚举变量的使用规则演示 * 4.4 综合实例 4.4.1 矩阵运算 【例4-6】矩阵相乘。用户输入AM×N,BN×K两个矩阵的元素,计算它们的乘积并输出。其中M,N,K也由用户输入,它们均不超过20。 【问题分析】 * 问题扩展 ①这是一个正确的程序,但不是一个好的程序,请同学们讨论这个程序有哪些不足?如何处理? ②关于矩阵的典型运算还有两个矩阵的和、差,求矩阵的逆矩阵、转置矩阵,矩阵元素的最大值、最小值,各行的最大、最小值,对角线的乘积、和等等,总之是通过下标操作数组的元素。 *
文档评论(0)