c语言程序设计15第十四讲第六章下.ppt
《c语言程序设计15第十四讲第六章下.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计15第十四讲第六章下.ppt(61页珍藏版)》请在三一办公上搜索。
1、1,C语言编程是一项技艺,需要多年的历练才能达到较为完善的境界!-摘自Expert C Programming,2,高级语言程序设计,主讲教师:贾彩燕计算机与信息技术学院计算机科学与技术系,3,第六章 数组,4,数组的概念、定义和使用数组程序实例数组作为函数参数字符数组和字符串两维和多维数组编程实例,主要内容,一维数值型数组的重要应用,5,要点回顾,一维数组的重要操作排序查找插入删除元素交换字符数组的如何定义,如何初始化?字符数组的有效长度和字符数组?常用的字符串处理函数有哪些?,6,例,找出(标准输入)文本中最长行并输出,保存已读最长行以输出,数组maxline,按字符串形式。数组line保
2、存新行,更长时转存maxline。假定行长不超过1022字符,用符号常量定义数组大小。,函数getline读入一行,存入参数数组并返回行长。需防止越界,用参数limit控制实参数组长度。int getline(int limit,char line);,基本处理框架:while(还有新行输入)if(新行比已记录的最长行更长)记录新行及其长度;输出记录下来的最长行;,7,行总有字符(空行有换行符),返回值0。文件结束时返回0。设MAXLEN表示数组长度,大循环可写为:while(getline(MAXLEN,line)!=0).,int main()int n,max=0;/*记录当前行和最长行
3、长度*/char lineMAXLEN,maxlineMAXLEN;while(n=getline(MAXLEN,line)0)if(n max)/*新行更长,保存*/strcpy(maxline,line);max=n;if(max 0)printf(”Len:%dn%sn,max,maxline);return 0;,8,整个程序:#include#include enum MAXLEN=1024;int getline(int limit,char line);int main()int getline(int limit,char line)int c,i=0;while(i limi
4、t-2,9,#include enum MAXLEN=1024;int getline(void);char lineMAXLEN,maxlineMAXLEN;int main()int n,max=0;/*当前行和最长行长*/while(n=getline()0)if(n max)max=n;strcpy(maxline,line);if(max 0)printf(%sn,maxline);return 0;,另一种写法:把两个数组作为外部变量,各函数里直接访问,不再作为参数传递。,10,int getline(void)int c,i=0;while(i MAXLEN-2,优点:可简化函数
5、定义和参数描述。缺点:数组名写在函数定义里,造成函数对全局数据的依赖。,11,程序的缺点:1)固定数组限制了能读入的最长行;2)出现超长行时出现截断,且长度统计错误。长度统计错误问题易解决:数组满后继续读字符计数,但字符不存入line。最后得到实际最长行的长度,及该行中不超过1022个实际字符。,人们倾向于把程序里大型、唯一、许多函数公用的数据(如大数组)定义为外部变量。一般数据用参数传递。对于具体问题应怎样处理,要考虑软件系统实现各方面的问题,如方便、清晰、数据安全等因素。,怎么办?,12,第十四讲(作业提示),P215页第5题:写一个把数字字符串转换成整数的函数,它只有一个字符数组参数参照
6、:P192页二进制转换P215页第11题:写程序,它读入一个文件,输出其中最长的词参照:P194页读入文件输出最长行P215页第13题:写一个函数,它能够判断字符串是否是一个回文英文字符串、中文字符串、中英文混杂中文:双字节表示一个中文要求:首字节的ASCII值大于127简单方法准确方法:了解中文的unicode,双字节编码后对应的ASCII值在19968(4E00)至40891(9FBB)之间,13,轻松一下:回文(Palindrome)的乐趣,回文就是指一个单词或短语,其顺读和倒读都是一样的两个经验的回文拿破伦被放逐到Elba岛时说的一句话“Albe was I,ere I saw Elb
7、a”A man,a plan,a canal-panama!1983年10月,CMU计算机科学研究生Jim Saxe将它扩展为:A man,a plan,a cat,a canal-panama!一场竞赛开始了,14,世界上最长的回文,耶鲁大学的Steve SmithA tool,a fool,a pool-loopaloofallota!几周之后的扩展A man,a plan,a cat,a ham,a yak,a yam,a hat,a cannal-panama!世界上最长的回文http:/17826个单词,15,清代女诗人吴绛雪的四季回文诗,春:莺啼岸柳弄春晴,夜月明。莺啼岸柳弄春晴,
8、柳弄春晴夜月明。明月夜晴春弄柳,晴春弄柳岸啼莺。夏:香莲碧水动风凉,夏日长。香莲碧水动风凉,水动风凉夏日长。长日夏凉风动水,凉风动水碧莲香。秋:秋江楚雁宿沙洲,浅水流。秋江楚雁宿沙洲,雁宿沙洲浅水流。流水浅洲沙宿雁,洲沙宿雁楚江秋。冬:红炉透炭炙寒风,御隆冬。红炉透炭炙寒风,炭炙寒风御隆冬。冬隆御风寒炙炭,风寒炙炭透炉红。,16,数组的概念、定义和使用数组程序实例数组作为函数参数字符数组和字符串两维和多维数组编程实例,主要内容,一维数值型数组的重要应用,17,6.5 两维和多维数组,一维数组有一个下标,元素线性排列。需要处理更复杂的结构,如数值应用中的矩阵。矩阵为两维,元素通过两个下标指定。如
9、何表示?,例:计算两个88的矩阵的和及乘积计算三维空间中的一系列点的中心。,18,二维数组的定义定义方式:数据类型数组名常量表达式常量表达式;,例 int a34;double b25;int c234;int a3,4;(),行数,列数,元素个数=行数*列数,二维和多维数组,称a为34的int(二维)数组,b为25的double(二维)数组等,c为234的int(三维)数组,19,数组元素的存放顺序原因:内存是一维的二维数组:按行序优先多维数组:最右下标变化最快,二维和多维数组,20,每个元素ai由包含4个元素的一维数组组成,二维数组a是由3个元素组成,二维数组理解,a是开始位置(数组a的首
10、地址)也是a0的开始位置,也是a00的位置,21,二维数组元素的初始化分行初始化:,22,二维数组元素的初始化按元素排列顺序初始化:,23,设有数组定义:double a32;int b44;a表示整个数组,a0、a1和a2表示成员数组。a01表示a的0成员数组中下标1的元素。例:a21=a01+a11;,二维(多维)数组的表示和使用,for(i=0;i 4;+i)for(j=0;j 4;+j)bij=i+j;,24,例:向一个二维数组输入并输出其全部元素,#include int main()int i,j;int b32;printf(“输入数据:n”);for(i=0;i 3;i+)fo
11、r(j=0;j 2;j+)scanf(“%d”,25,for(i=0;i N;+i)for(j=0;j N;+j)x=0.0;for(k=0;k N;+k)x+=Aik*Bkj;Cij=x;for(i=0;i N;+i)for(j=0;j N;+j)printf(%f%c,Cij,j=N-1?n:);,例:写程序段求出由两维数组A、B表示的55矩阵的乘积,存入两维数组C(设A,B已有值)并输出。,26,例:将5个同学的姓名从小到大排序并输出,27,二维(多维)数组作为函数参数,下面函数求出n5数组中数据均值(n是参数):double aavg(int n,double a5)int i,j;d
12、ouble sum=0.0;for(i=0;i n;+i)for(j=0;j 5;+j)sum+=aij;return sum/(5*n);,可用于任何n5的数组,但不能用于例如47的数组下章将介绍一种定义通用函数的方法。,作为函数参数时不必给出最左一维长度,但要求给出除最左一维外其他各维的长度。,28,例:有一个3*4的矩阵,求出其中的最大元素的值.,#include int max_value(int,int 4);int max_value(int n,int array4)int i,j,max=array00;for(i=0;i max)max=arrayij;return max;
13、int main()static int a34=1,3,5,7,2,4,6,8,15,17,34,12;printf(“max value is%dn”,max_value(3,a);return 0;,29,数组的概念、定义和使用数组程序实例数组作为函数参数字符数组和字符串两维和多维数组编程实例,主要内容,30,6.6 编程实例(下),本节讨论一些基于数组的编程实例。一个具体问题可写出许多不同的程序。从问题到程序的工作过程中,许多地方需要编程者做出选择。有些选择涉及对问题的不同考虑或认识,可能引起程序间的显著差异。,31,例1:成绩直方图文件里保存着一批学生成绩,写程序读入这些成绩,产生其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 15 第十四 第六
链接地址:https://www.31ppt.com/p-5426408.html