什么是程序设计.ppt

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

七 、结构体与链表(二) 7.1 结构体概述 7.2 结构体类型声明 7.3 结构体变量的定义、使用、初始化 7.4 结构体数组及其应用 7.5 结构体和指针 7.6 链表概述 7.7 创建和操作链表 7.4 结构体数组及其应用 数组的每个元素都是结构类型的数据,它们分别包含各个成员项。 1、 结构数组的定义 struct Student { int sno; double score; }; Student st[30]; struct Student { int sno; double score; } st[30]; struct { int sno; double score; } st[30]; 2、 结构体数组的初始化 Student st[2]={ {1001,89.0}, {1002,76.0} } 3、结构体数组应用举例1 输入n个学生的姓名和3门功课成绩,然后根据3门功课的平均成绩从高分到低分显示每个学生的姓名、3门功课成绩及平均成绩。 bool cmp(Stud s1, Stud s2) { int total1 = s1.score1+s1.score2+s1.score3; int total2 = s2.score1+s2.score2+s2.score3; return total1 total2; } struct Stud { string sname; double score1, score2, score3; }; Stud st[100]; cinn; // n=100 for(int i=0; in; i++) { cinst[i].snamest[i].score1 st[i].score2 st[i].score3; } // 调用前面已经实现的排序函数,mySort里面使用cmp函数进行比较 mySort(st, n); for(int i=0; in; i++) { coutst[i].sname st[i].score1 st[i].score2 st[i].score3 (st[i].score1+ st[i].score2+ st[i].score3)/3endl; } 尝试用结构体完成1129,1199 结构体数组应用举例2 实现每周一次的在线解题排行榜 输入数据: 包括每个人的上期完成数,本期Normal,本期Special数量 排名规则: 1)先按normal排序,取前10人 2)再排本期完成数量最多的5人(出现在规则1中的人不参于这里的排序) 3)对剩余的人员按total排序 (1) 如何构造结构体 struct Stud { string id; // 账号 string name; // 姓名 int last; // 上期总数 int normal; // 标准解题数 int special; // 特殊解题数 int total; // 本期总数 int complete; // 本期完成 int rank; // 排名 }; Stud st[50]; (2) 成功排序后如何确定名次 for(int i=0; ilen; i++) { if (i0 st[i].normal==st[i-1].normal) { st[i].rank=st[i-1].rank; } else { st[i].rank=i+1; } } 80 78 78 78 65 40 1 2 2  2 5  6 (3) 如何规划流程 1、输入数据 2、处理 按规则1排序1-10人 按规则2排序11-15人 按规则3排序16以后的学生 按规则1确定1-10人名次 按规则2确定11-15人名次 按规则3确定16以后的名次 3、输出结果 (4) 如何排序(可用选择排序) int A[N]; // 循环N-1轮次,第i轮选出第i小的元素,并与第i个元素交换 for( int i=0; iN-1; i++) { //第i轮选出第i小的元素 int pos = i; for( int j=i+1; jN; j++) { if(A[j]A[pos]) pos=j; } // 交换元素,使得第i轮后,第i小的元素落在正确的位置(第i位置) int t=A[i]; A[i]=A[pos]; A[pos]=t; } if(cmp(A[j] , A[pos]) == true) pos=j; (5) 如何使用排序规则 bool cmpBy

文档评论(0)

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

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

1亿VIP精品文档

相关文档