维数组与字符数组.ppt

上传人:小飞机 文档编号:6599570 上传时间:2023-11-16 格式:PPT 页数:20 大小:346.14KB
返回 下载 相关 举报
维数组与字符数组.ppt_第1页
第1页 / 共20页
维数组与字符数组.ppt_第2页
第2页 / 共20页
维数组与字符数组.ppt_第3页
第3页 / 共20页
维数组与字符数组.ppt_第4页
第4页 / 共20页
维数组与字符数组.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《维数组与字符数组.ppt》由会员分享,可在线阅读,更多相关《维数组与字符数组.ppt(20页珍藏版)》请在三一办公上搜索。

1、第10讲 一维数组与字符数组,请大家利用放假期间及时消化我讲的内容,并举一反三,模仿未讲过的例题多写程序。如果说学习C语言有捷径的话:那就是多读程序,多写程序,解析C程序设计第2章 简单程序设计,2,例:求60个学生的最高分,算法:输入60个学生的成绩依次比较,找出最高分输入最高分。,解析C程序设计第2章 简单程序设计,3,方法一:,#include#define N 60void main()int aN,max;printf(Input%d score:n,N);for(i=0;imax)max=ai;printf(n The maximum score is%d:n,max);,解析C程

2、序设计第2章 简单程序设计,4,方法二:,#include#define N 60void main()int aN,max_i;printf(Input%d score:n,N);for(i=0;iamax_i)max_i=i;/*求最大元素对应的下标*/printf(n The maximum score is%d:n,amax_i);,解析C程序设计第2章 简单程序设计,5,例61对200个学生成绩从大到小排序,算法输入200个成绩排序输入排序结果,解析C程序设计第2章 简单程序设计,6,冒泡法对N个数从大到小排序:,第0趟排序:比较a0和a1,不满足顺序交换,再比较a1和a2,不满足顺

3、序交换,依此类推,直至aN-2和aN-1比较,不满足顺序交换,通过这一趟的两两比较找到第1个最小的数放在aN-1的位置第J趟排序:比较a0和a1,不满足顺序交换,再比较a1和a2,不满足顺序交换,依此类推,直至aN-j-2和aN-j-1比较,不满足顺序交换,通过这一趟的两两比较找到第j+1个最小的数放在aN-j-1的位置共N-1趟,for(j=0;j=N-2;j+)/*第j趟排序*/,/*通过依次比较aI和aI+1,不满足顺序交换*/,for(i=0;i=N-j-2;i+)if(aiai+1)t=ai;ai=ai+1;ai+1=t;,解析C程序设计第2章 简单程序设计,7,#include#d

4、efine N 200void main()int aN,i,j,t;printf(Input%d score:n,N);for(i=0;iai+1)/*若从小到大排序,改成*/t=ai;ai=ai+1;ai+1=t;printf(n The sorted score:n);for(i=0;i=N-1;i+)if(i%15=0)printf(n);printf(%4d,ai);/*书中P167的源代码改为for(i=0;i=N-j-2;i+)*/,例61完整程序:冒泡法,解析C程序设计第2章 简单程序设计,8,选择法对N个数从大到小排序,第0趟排序:从a0至aN-1,比较找出其中最大数所在的下

5、标k,若k!=0,说明ak比a0大,则交换a0和ak,通过这一趟的比较找到第1个最大的数放在a0的位置第J趟排序:从aj至aN-1,比较找出其中最大数所在的下标k,若k!=j,说明ak比aj大,则交换aj和ak,通过这一趟的比较找到第j+1个最大的数放在aj的位置共N-1趟,for(j=0;j=N-2;j+)/*第j趟排序,通过这一趟排序,找到第j+1大的数存于aj*/,/*从aj至aN,比较找出其中最大数所在的下标k*/*若k!=j,说明ak比aj大,则交换aj和ak*/,k=j;for(i=j+1;iak)k=i;,if(k!=j)t=ak;ak=aj;aj=t;,解析C程序设计第2章 简

6、单程序设计,9,#include#define N 200void main()int aN,i,j,t;printf(Input%d score:n,N);for(i=0;iak)/*若从小到大排序,改成*/k=i;if(k!=j)t=ak;ak=aj;aj=t;printf(n The sorted score:n);for(i=0;i=N-1;i+)if(i%15=0)printf(n);printf(%4d,ai);,例61完整程序:选择法,解析C程序设计第2章 简单程序设计,10,查找算法,顺序查找:按数组下标顺序查找二分法查找(折半查找)我们查字典的时候怎样查找?在已经排好序的情况

7、下可以进行二分查找。过程:先找到查找区域的中点,如果中间比要找的值小,说明要找的值在右半边,反之,在左半边,相等则表示找到。若没有找到,在新的查找区域,继续这样查找,直至所有的区域都找到。,解析C程序设计第2章 简单程序设计,11,二分法程序,#include#define N 200void main()int aN,left,right,mid,x,find_i=-1;low=0;high=n-1;Printf(“please input the number to search:”);scanf(“%d”,解析C程序设计第2章 简单程序设计,12,思考:,当数组里存储的是字符串时该怎样修

8、改前边例题的程序?将前边的n或N一律改成strlen(a)因为字符数组中字符的个数绝不是定义时规定的数组长度,其具体个数要通过上述库函数求得。,解析C程序设计第2章 简单程序设计,13,与字符串相关的库函数,在中定义了若干专门的字符串处理函数strlen:strlen(字符串);返回字符串的实际长度,即不包括0的实际字符个数strcpy:strcpy(目的字符串,源字符串);strcat:strcat(目的字符串,源字符串);strcmp:strcmp(字符串1,字符串2);当出现第一对不相等的字符时,就由这两个字符决定所在字符串的大小返回其ASCII码比较的结果值,作业1:P178还有两个函

9、数,请自学。,解析C程序设计第2章 简单程序设计,14,错误2:if(str1 str2),最容易出现的错误,错误1:str1=str2;,字符串不能直接整体复制!strcpy(str1,str2);/*正确*/,也不能用关系运算符比较大小if(strcmp(str1,str2)0)/*正确*/,写错也不会提示语法错误,为什么?,解析C程序设计第2章 简单程序设计,15,求三个字符串中最大的一个,算法:输入字符串str1,str2,str3比较str1和str2,将最大值赋给strmax再拿strmax和str3进行比较,若str3大,再将str3赋值给strmax。输出strmax,解析C程

10、序设计第2章 简单程序设计,16,#include#include#define N 50main()char str1N,str2N,str3N,strmaxN;printf(“Please enter three strings:n”);gets(str1);gets(str2);gets(str3);gets(max);/*输入三个字符串*/if(strcmp(str1,str2)0)/*求前两个字符串的最大值strmax*/strcpy(strmax,str1);if(strcmp(str3,strmax)0)/*求strmax和str3的最大值*/strcpy(strmax,str3

11、);printf(The max is:);puts(strmax);,程序,解析C程序设计第2章 简单程序设计,17,例67判断回文数,例:123454321是回文数再例:12345321不是回文数算法:,str,解析C程序设计第2章 简单程序设计,18,#include#include void main()int i,j,equal=1;char str20;printf(Input a string:);scanf(%s,str);for(i=0,j=strlen(str)-1;i*/,例67 程序,解析C程序设计第2章 简单程序设计,19,本讲小结,一维数组的相关程序设计求最大值、排

12、序、查找等注意数值数组与字符数组的区别几个用于字符串处理的库函数,字符数组的编程题目是经常考的。下节课讲数组名作函数参数,请提前预习,解析C程序设计第2章 简单程序设计,20,思考题与作业:,思考题:如何将我们写的这些程序分别写成函数?这些函数又将如何调用?作业:用数组实现统计全班学生C语言成绩的总分和平均分。仿照例66的程序实现strlen(),strcat(),strcmp()三个程序的功能,但其中不能用到这三个库函数。自学:P178页另外两个函数的用法。,Have a good time during the holiday!But please not forget to:Review what we have learnedPrepare the 6th chapterHomework submission deadline:may,11,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号