程序设计和C语言案例 (20).ppt
竞技比赛 一维数组案例13案例13-问题描述运动竞技比赛运动案例13-问题描述竞技比赛一项竞技比赛结束后,按成绩排序,输出参赛运动员的名次、编号和成绩。案例13-知识点什么是算法?计算机解决问题的步骤有穷性确定性输入个数不限至少有一个输出有效性自然语言或流程图1 算法概述 算法有哪些特性?如何表示一个算法呢?案例13-知识点举例:求10个数的最大值。开始10个数a;0i;a0 max;aimax?i+1i;aimax;nyi10?yn输出max值结束流程图法起止框处理框判断框输入输出框流程线案例13-问题描述1.输入10个数到a;2.给max 和 i 赋值;3.Max 和ai比较,如果 max 的值,则把该值送入 max 中;4.i+1i;5.if i10,返回第3步,否则,算法结束。自然语言法案例13-知识点main()int i,max,a10;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);max=a0;for(i=1;imax)max=ai;printf(maxmum=%dn,max);程序代码延迟符第1第2第3第4第5结果988888895555559444444922222290000009第第1第第2第第3第第4结果结果855555844444822222800000899999第第1第第2第第3结果结果544445222250000588889999第第1第第2结果结果422240004555888999第第1结果结果200244558899下标012345案例13-知识点算法思想图示相邻的数据进行比较排序2 经典算法:冒泡排序法案例13-问题解决1.输入6个数到a中;2.j=4;3.i=0;4.if (aiai+1)二数交换;5.i+1 i;6.If(i=0)返回第3步执行,否则,6个数从小到大有序排列,输出排序好的6个数,算法结束。自然语言法:案例13-知识点流程图开始i=0;6个数a;j=4;aiai+1?i+1 i;ai和ai+1交换;nyj-1 j;i=0?y结束案例13-问题解决解题解题思路思路1.存储成绩表数据和对应的编号数据。2.根据冒泡法,对成绩表的数据从高到低排序,相应的改变编号数据的顺序。3.输出结果数据。案例13-问题解决解题解题思路思路1 11.初始化数组a和b;2.j=6;3.i=0;4.if (aiai+1),分别交换a,b对应的二数;5.i+1 i;6.If(i=0)返回第3步执行,否则执行第9步;9.输出前5名的名次、编号和成绩,算法结束。算法案例13-问题解决#include int main()int a8=85,90,76,67,88,80,34,56;int b8=1,4,6,5,2,8,7,3;int i,j,t;printf(公布参赛选手成绩:n);for(i=0;i=0;j-)for(i=0;i=j;i+)if(aiai+1)t=ai;ai=ai+1;ai+1=t;t=bi;bi=bi+1;bi+1=t;案例13-问题解决.printf(获得决赛资格的5人分别是:n);printf(名 次 编 号 成 绩);printf(n);for(i=0;i5;i+)printf(第%d名%8d%8dn,i+1,bi,ai);案例13-问题解决#include int main()int a10=80,78,34,56,85,90,76,67,88,99;int b10=8,2,7,4,5,6,3,1,9,10;int i,j,t;printf(公布参赛选手成绩:n);for(i=0;i10;i+)printf(%2d号:%-5dn,bi,ai);printf(nn);.拓展1int a8,b8;scanf(%d%d%d.%d,&a0,.,&b7,);int i,j,t,a8,b8;for(i=0;i=0;j-)for(i=0;i=j;i+)if(aiai+1)t=ai;ai=ai+1;ai+1=t;t=bi;bi=bi+1;bi+1=t;拓展2案例13-问题解决#include int main().int i,j,t,sign=0;.for(j=6;j=0;j-)for(i=0;i=j;i+)if(aiai+1)t=ai;ai=ai+1;ai+1=t;t=bi;bi=bi+1;bi+1=t;sign=1;if(sign=0)break;.拓展2案例13-问题解决程序运行结果案例13-小结算法特性算法描述方法:自然语言法和流程图法冒泡算法小结小结PPT模板下载: 谢谢观看THANK YOU例13内容结束