《(20)--5.3 数组应用程序实例.ppt》由会员分享,可在线阅读,更多相关《(20)--5.3 数组应用程序实例.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5.35.3数组应用程序实例数组应用程序实例数组应用程序实例数组应用程序实例uu冒泡排序冒泡排序uu学生成绩分等级统计学生成绩分等级统计uu折半查找折半查找uu统计一个字符串中的单词个数统计一个字符串中的单词个数5.3.15.3.1冒泡排序冒泡排序冒泡排序冒泡排序pp实例一:对实例一:对N N个整数进行升序排序,并输出排序结果。个整数进行升序排序,并输出排序结果。l l问题分析与算法设计问题分析与算法设计冒泡排序算法冒泡排序算法对于给定的待排序数据,从头开始,依次对相邻的两个数据进行两两比较,当前者大时,对于给定的待排序数据,从头开始,依次对相邻的两个数据进行两两比较,当前者大时,两数交换位置
2、,直到比较完最后一个数据,此时,这些数据的最大值处于最末位置。这两数交换位置,直到比较完最后一个数据,此时,这些数据的最大值处于最末位置。这称为一趟比较。然后对其余数据重复这种比较过程,直到排序结束。称为一趟比较。然后对其余数据重复这种比较过程,直到排序结束。uuN N个数据需进行个数据需进行N-1N-1趟排序操作趟排序操作 待排序数列:6 28 21 -19 5第一趟结束:6 21 -19 5 2828第二趟结束:6 -19 5 21282128第三趟结束:-19 5 6212862128第四趟结束:-19562128-195621285.3.15.3.1冒泡排序冒泡排序冒泡排序冒泡排序#i
3、nclude#define N 10int main()int aN,i,j,temp;for(i=0;iN;i+)scanf(%d,&ai);for(i=1;iN;i+)for(i=1;iN;i+)for(j=0;jN-i;j+)for(j=0;jaj+1)if(ajaj+1)temp=aj;aj=aj+1;aj+1=temp;temp=aj;aj=aj+1;aj+1=temp;for(i=0;iN;i+)printf(%d ,ai);printf(n);return 0;维数组维数组a输入数据输入数据一维数组一维数组元素排序元素排序5.3.15.3.1冒泡排序冒泡排序冒泡排序冒泡排序p实例
4、二:学生成绩系列案例之,使用数组存储分等统计统计结果。一个班级有N名学生,每个学生有两门课程,实行百分制考核,要求分别统计各个等级的人数,并将分等级统计的结果保存到一维数组中。分等级的标准如下:优秀(excellence)平均成绩90 良好(all right)80平均成绩90 中等(middling)70平均成绩80 及格(pass)60平均成绩70 不及格(fail)平均成绩605.3.25.3.2学生学生学生学生成绩分等成绩分等成绩分等成绩分等统计统计统计统计l问题分析与算法设计学生成绩分为五个等级,因此可定义长度为5的int型数组r,每个数组元素存储一个等级的统计结果。在例4-11基础
5、上改写程序时,应将存储统计结果的各个简单变量r0、r1、r2、r3、r4修改为相应的数组元素,其对应关系如表所示。优秀人数优秀人数良好人数良好人数中等人数中等人数及格人数及格人数不及格人数不及格人数存储各等级人数的数组元素存储各等级人数的数组元素r0r1r2r3r4在在第第4章章程序中使用的变量程序中使用的变量r0r1r2r3r45.3.25.3.2学生学生学生学生成绩分等成绩分等成绩分等成绩分等统计统计统计统计#include#define N 6 /*班级人数*/int main(void)int s1,s2,ave,i;staticintr5;staticintr5;for(i=0;iN
6、;i+)scanf(%d,%d,&s1,&s2);ave=(s1+s2)/2;switch(ave/10ave/10)case1010:case9:9:r0+;r0+;break;case 8 8:r1+;r1+;break;case 7 7:r2+;r2+;break;case 6 6:r3+;r3+;break;default:r4+;r4+;for(i=0;iamid,xamid,则则top=mid+1top=mid+1;若;若xamid,xbot,topbot,则查找失败,结束;否则转则查找失败,结束;否则转。5.3.35.3.3折半查找折半查找折半查找折半查找#include#def
7、ine N 15int main(void)int aN=3,6,7,8,21,23,36,38,67,69,80,82,85,88,96;int x,top,bot,mid;scanf(%d,&x);top=0,bot=N-1;top=0,bot=N-1;dodomid=(top+bot)/2;mid=(top+bot)/2;if(amid=x)break;if(amid=x)break;elseif(amidx)top=mid+1;elseif(amidx)top=mid+1;elsebot=mid-1;elsebot=mid-1;while(top=bot);while(top=bot)
8、;if(bottop)if(bottop)printf(%d:no found.n,x);else printf(Success!a%d is%d.n,mid,x);return 0;设置初始设置初始查找边界查找边界在在a数组中,用数组中,用折半法查找折半法查找x判断查找判断查找结果状态结果状态pp实例四:输入一行字符,统计其中单词的个数。实例四:输入一行字符,统计其中单词的个数。l l问题分析与算法设计问题分析与算法设计设长度是设长度是n n的字符串,含有单词个数为的字符串,含有单词个数为wordword,该字符串存储在字符数组,该字符串存储在字符数组texttext中,中,各字符元素分别为
9、各字符元素分别为text0text0、text1text1、text2text2textn-1textn-1。uutexttexttexttext有有有有3 3 3 3种情况种情况种情况种情况 texttext为空串,为空串,text0=0text0=0,wordword的统计结果为的统计结果为0 0。texttext的开始字符为空格符,即的开始字符为空格符,即text0=text0=,开始时没有出现单词,开始时没有出现单词,wordword的初的初值置为值置为0 0。texttext的开始字符为非空格符,一开始就出现了单词,的开始字符为非空格符,一开始就出现了单词,wordword的初值置为
10、的初值置为1 1。5.3.45.3.4单词统计单词统计单词统计单词统计对于非空字符串,按以下步骤检测下一个单词:对于非空字符串,按以下步骤检测下一个单词:若若textitexti(i=1,2,3,i=1,2,3,)不是字符串结束标记)不是字符串结束标记00,当若满足下,当若满足下列条件时,则必然出现新单词:列条件时,则必然出现新单词:texti-1=&texti!=texti-1=&texti!=i+i+,重复步骤,重复步骤,直至,直至textitexti为为00时结束。时结束。5.3.45.3.4单词统计单词统计单词统计单词统计#include#defineN100intmain(void)
11、chartextN;intword=0,i;gets(text);if(text0!=0)if(text0!=)word=1;for(i=1;texti!=0;i+)if(texti-1=&texti!=)word+;printf(Result:%dn,word);return0;字符串非空,则字符串非空,则进行统计进行统计字符串首字符为非字符串首字符为非空格符空格符判断字符串中的判断字符串中的单词单词5.3.45.3.4单词统计单词统计单词统计单词统计小小小小 结结结结(1)(1)数组中的所有元素具有相同的数据类型,数组的数据类型就是数组元素的数据类型。一维数组的定义格式:数据类型数据类型数组名数组名数组长度数组长度;(2)(2)数组初始化的方式有多种,可以对全部元素初始化,也可以对部分元素初始化。(3)(3)字符型数组具有数组的一切性质,但又有其特点,字符型数组的操作对应有大量的操作函数,如字符串复制、连接、比较等均有专门的函数予以实现。