C+语言程序设计第十一讲.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C+语言程序设计第十一讲.ppt》由会员分享,可在线阅读,更多相关《C+语言程序设计第十一讲.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1、从任意、从任意、从任意、从任意n n个数中找出最大数和最小数,并将它们相互交换后个数中找出最大数和最小数,并将它们相互交换后个数中找出最大数和最小数,并将它们相互交换后个数中找出最大数和最小数,并将它们相互交换后输出。输出。输出。输出。2 2、将一个数组中的数循环左移。、将一个数组中的数循环左移。、将一个数组中的数循环左移。、将一个数组中的数循环左移。3 3、输入若干学生的成绩,计算平均分,并输出低于平均分的学、输入若干学生的成绩,计算平均分,并输出低于平均分的学、输入若干学生的成绩,计算平均分,并输出低于平均分的学、输入若干学生的成绩,计算平均分,并输出低于平均分的学生成绩。生成绩。
2、生成绩。生成绩。4 4、从任意、从任意、从任意、从任意n n个数(允许有重复)中删除某一个数个数(允许有重复)中删除某一个数个数(允许有重复)中删除某一个数个数(允许有重复)中删除某一个数k k。5 5、输入整数、输入整数、输入整数、输入整数n n,将其各位数字取出后,重新组合成一个新的最,将其各位数字取出后,重新组合成一个新的最,将其各位数字取出后,重新组合成一个新的最,将其各位数字取出后,重新组合成一个新的最大的整数。大的整数。大的整数。大的整数。6 6、将一个数组中的数逆序重新存放后输出。、将一个数组中的数逆序重新存放后输出。、将一个数组中的数逆序重新存放后输出。、将一个数组中的数逆序重
3、新存放后输出。作作 业业例例例例5 5:输入若干个正整数,以输入若干个正整数,以输入若干个正整数,以输入若干个正整数,以0 0或负数结束,将其中或负数结束,将其中或负数结束,将其中或负数结束,将其中个位不为个位不为个位不为个位不为0 0的数输出,并统计满足条件的数据个数。的数输出,并统计满足条件的数据个数。的数输出,并统计满足条件的数据个数。的数输出,并统计满足条件的数据个数。输入输入x n=0 count+for i=0 to n-1ai%10!=0T输出输出aiF x0an=xcount=0n+输入输入x#include void main()int a100,x,n,i,count;n=
4、0;count=0;cinx;while(x0)an=x;n+;cinx;for(i=0;in;i+)if(ai%10!=0)coutai;count+;cout个数是:个数是:n;cinn;for(i=0;in;i+)for(i=0;iai;cinai;m=0;m=0;for(i=0;in;i+)for(i=0;in;i+)if(ai%5if(ai%5=0)0)bm=ai;bm=ai;m+;m+;for(i=0;im;i+)for(i=0;im;i+)coutbi;coutbi;输入输入nm=0 m+for i=0 to n-1ai%5=0Tbm=aiF for i=0 to n-1输入输入
5、ai for i=0 to m-1输出输出bi基本思想:假设数组基本思想:假设数组基本思想:假设数组基本思想:假设数组a a已经按已经按已经按已经按由小到大由小到大由小到大由小到大的顺序排的顺序排的顺序排的顺序排好序,设三个变量好序,设三个变量好序,设三个变量好序,设三个变量low,highlow,high和和和和midmid分别代表首元素,分别代表首元素,分别代表首元素,分别代表首元素,最后一个元素以及中间元素的下标,初值分别为:最后一个元素以及中间元素的下标,初值分别为:最后一个元素以及中间元素的下标,初值分别为:最后一个元素以及中间元素的下标,初值分别为:low=0low=0、high=
6、n-1high=n-1、mid=(low+high)/2mid=(low+high)/2。从中间元素。从中间元素。从中间元素。从中间元素开始查找,用开始查找,用开始查找,用开始查找,用x x和和和和amidamid比较,此时有三种情况:比较,此时有三种情况:比较,此时有三种情况:比较,此时有三种情况:1)1)若若若若x=amid x=amid,则查找成功;,则查找成功;,则查找成功;,则查找成功;2)2)若若若若x amid x amid x amid,则令,则令,则令,则令low=mid+1low=mid+1折半查找法折半查找法例:数组元素为:例:数组元素为:例:数组元素为:例:数组元素为:
7、5,13,19,21,37,56,64,75,80,88,925,13,19,21,37,56,64,75,80,88,921.1.查找查找查找查找x=21 x=21 的情况的情况的情况的情况(1)low=0;high=10;mid=(0+10)/2=5(1)low=0;high=10;mid=(0+10)/2=5 5 13 19 21 37 56 64 75 80 88 92 5 13 19 21 37 56 64 75 80 88 92lowlowmidmidhighhigh因为因为因为因为amidxamidx,所以向左找,令,所以向左找,令,所以向左找,令,所以向左找,令high=mid
8、-1=4high=mid-1=4(2)low=0;high=4;mid=(0+4)/2=2(2)low=0;high=4;mid=(0+4)/2=2 5 13 19 21 37 56 64 75 80 88 92 5 13 19 21 37 56 64 75 80 88 92lowlowmidmidhighhigh因为因为因为因为amidxamidx,所以向右找,令,所以向右找,令,所以向右找,令,所以向右找,令low=mid+1=3low=mid+1=3(3)low=3;high=4;mid=(3+4)/2=3(3)low=3;high=4;mid=(3+4)/2=3 5 13 19 21
9、37 56 64 75 80 88 92 5 13 19 21 37 56 64 75 80 88 92lowlowmidmidhighhigh因为因为因为因为amid=xamid=x,查找成功,所查元素的下标为,查找成功,所查元素的下标为,查找成功,所查元素的下标为,查找成功,所查元素的下标为midmid0 01 12 23 34 45 56 67 78 89 910100 01 12 23 34 45 56 67 78 89 910100 01 12 23 34 45 56 67 78 89 91010(1)low=0;high=10;mid=(0+10)/2=5(1)low=0;high
10、=10;mid=(0+10)/2=5因为因为因为因为amidxamidx,所以向右找,令,所以向右找,令,所以向右找,令,所以向右找,令low=mid+1=6low=mid+1=6(2)low=6;high=10;mid=(6+10)/2=8(2)low=6;high=10;mid=(6+10)/2=8 5 13 19 21 37 56 64 75 80 88 92 5 13 19 21 37 56 64 75 80 88 92lowlowmidmidhighhigh因为因为因为因为amidxamidxamidx,所以向左找,令,所以向左找,令,所以向左找,令,所以向左找,令high=mid-
11、1=8high=mid-1=82.2.查找查找查找查找x=85 x=85 的情况的情况的情况的情况 5 13 19 21 37 56 64 75 80 88 92 5 13 19 21 37 56 64 75 80 88 92lowlowmidmidhighhigh此时此时此时此时lowhighlowhigh,查找失败,查找失败,查找失败,查找失败0 01 12 23 34 45 56 67 78 89 910100 01 12 23 34 45 56 67 78 89 910100 01 12 23 34 45 56 67 78 89 91010#include#include void m
12、ain()void main()int a100,i,n,x,low,high,mid;int a100,i,n,x,low,high,mid;cinn;cinn;for(i=0;in;i+)for(i=0;iai;cinai;cinx;cinx;low=0;low=0;high=n-1;high=n-1;while(while(low=highlow=high)mid=(low+high)/2;mid=(low+high)/2;if(x=amid)if(x=amid)break;break;else if(xamid)else if(xamid)high=mid-1;high=mid-1;e
13、lseelselow=mid+1;low=mid+1;if(if(x=amidx=amid)coutYES:mid;coutYES:mid;elseelsecoutNO;coutNO;#include#include void main()void main()int i,j,temp,n,a100;int i,j,temp,n,a100;cinn;cinn;for(i=0;in;i+)for(i=0;iai;cinai;for(i=0;in-1;i+)for(i=0;in-1;i+)for(j=i+1;jn;j+)for(j=i+1;jaj)if(aiaj)temp=ai;temp=ai;a
14、i=aj;ai=aj;aj=temp;aj=temp;for(i=0;in;i+)for(i=0;in;i+)coutai;coutai;例:将任意例:将任意n个数由小到大排序。个数由小到大排序。排排 序序#include#include void main()void main()int i,j,n,temp,int i,j,n,temp,didi,a100;,a100;cinn;cinn;for(i=0;in;i+)for(i=0;iai;cinai;for(i=0;in-1;i+)for(i=0;in-1;i+)di=i;di=i;for(j=i+1;jn;j+)for(j=i+1;ja
15、j)if(adiaj)di=j;di=j;if(i!=di)if(i!=di)temp=ai;temp=ai;ai=adi;ai=adi;adi=temp;adi=temp;for(i=0;in;i+)for(i=0;in;i+)coutai;coutaia1a0a1,则交换;然后比较第二个数与第三个则交换;然后比较第二个数与第三个则交换;然后比较第二个数与第三个则交换;然后比较第二个数与第三个数;依次类推,直至第数;依次类推,直至第数;依次类推,直至第数;依次类推,直至第n-1n-1个数和第个数和第个数和第个数和第n n个数比较为个数比较为个数比较为个数比较为止止止止第一趟冒泡排序,结果最大
16、的数被安置在第一趟冒泡排序,结果最大的数被安置在第一趟冒泡排序,结果最大的数被安置在第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上最后一个元素位置上最后一个元素位置上最后一个元素位置上;(2 2)对前)对前)对前)对前n-1n-1个数进行第二趟冒泡排序,结果使个数进行第二趟冒泡排序,结果使个数进行第二趟冒泡排序,结果使个数进行第二趟冒泡排序,结果使次大的数被安置在第次大的数被安置在第次大的数被安置在第次大的数被安置在第n-1n-1个元素位置个元素位置个元素位置个元素位置;(3 3)重复上述过程,共经过)重复上述过程,共经过)重复上述过程,共经过)重复上述过程,共经过n-1n-1趟冒泡排
17、序后,趟冒泡排序后,趟冒泡排序后,趟冒泡排序后,排序结束。排序结束。排序结束。排序结束。相邻两数比较,大数相邻两数比较,大数 小数小数 3 38 84 42 21 13 38 84 42 21 13 38 84 42 21 13 34 48 82 21 13 34 42 28 81 13 34 42 21 18 8第第第第一一一一趟趟趟趟3 34 42 21 18 83 34 42 21 18 83 32 24 41 18 83 32 21 14 48 8第第第第二二二二趟趟趟趟3 32 21 14 48 82 23 31 14 48 82 21 13 34 48 8第第第第三三三三趟趟趟趟2
18、 21 13 34 48 81 12 23 34 48 8第第第第四四四四趟趟趟趟a1 a2 a3 a4 a5 j=1 to 4 j=1 to 3 j=1 to 2 j=1 to 1由小到大排序由小到大排序#include#include void main()void main()int a100,n,i,j,temp;int a100,n,i,j,temp;scanf(%d,&n);scanf(%d,&n);for(i=1;i=n;i+)for(i=1;i=n;i+)scanf(%d,&ai);scanf(%d,&ai);for(i=1;in;i+)for(i=1;in;i+)for(j=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第十一
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内