C语言程序设计第5章数组_第1页
C语言程序设计第5章数组_第2页
C语言程序设计第5章数组_第3页
C语言程序设计第5章数组_第4页
C语言程序设计第5章数组_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章数组,基本知识讲解,5.1一维数组的定义及引用5.2二维数组的定义和引用5.3字符数组,返回,5.1一维数组,数组的引入求出50人中成绩高于平均分的人数;存放50人每人5门课程的成绩;保存Fibonacci数列的前40项,5.1.1一维数组的定义与引用,数组数组是同类型数据的有序集合,是共享同一名称的一组连续保存的变量。这些变量所占的空间被称为“数组单元”。保存在其中的值称为“数组元素”。,5.1.1一维数组的定义与引用,定义数组:(1)规定数组的名称;(2)规定数组的类型;(3)规定数组的大小。,5.1.1一维数组的定义与引用,一、一维数组的定义:类型说明符数组名exp;例如:inta10,number5;二、一维数组元素的引用数组名下标例如:a5=6a0=a5*0.5+a7-a2=2时限制条件40项输出要求每行5项输出该数列的前40项,5.1.3一维数组应用举例,main()intn;longintf40=1,1;for(n=2;n40;n+)fn=fn-2+fn-1;for(n=0;n40;n+)if(n%5=0)printf(“n”);printf(“%12ld”,fn);,5.1.3一维数组应用举例,例5-2利用选择法对10个整数进行由小到大排序。,分析:输入:待排序的数据,存于一个一维数组中;输出:排序后的数据算法:一趟简单选择排序的操作为:通过n-i次数据的比较,从n-i+1个数据中选出值最小的那个,并和第i位上的数据交换。,5.1.3一维数组应用举例,例5-2利用选择法对10个整数进行由小到大排序。,擂台思想(3,-3,5,7,8,-4)第1趟:(-4,-3,5,7,8,3)第2趟:(-4,-3,5,7,8,3)第3趟:(-4,-3,3,7,8,5)第4趟:(-4,-3,3,5,8,7)第5趟:(-4,-3,3,5,7,8),5.1.3一维数组应用举例,程序清单:,发散1置换排序,例5-8用起泡法对10个数由小到大排序。,算法思想:将相邻两个数比较,将小的调到前头。,5.1.3一维数组应用举例,985420初态,888889555559444449222229000009第一趟,555584444822228000089999第二趟,444522250005888999第三趟,224004558899第四趟,024589第五趟,比较5次,比较4次,比较3次,比较2次,比较1次,5.1.3一维数组应用举例,5.1.3一维数组应用举例,程序清单,5.1.3一维数组应用举例,返回,发散1:改进的冒泡排序,5.2.1二维数组的定义与引用,一、二维数组的定义类型名数组名exp1exp2;如:intnumber54;chara34;,a00a01a02a03a10a11a12a13a20a21a22a23,a0a1a2,二、二维数组的引用数组名下标下标如:a23b12=a23/2a23=3等等;,5.2.1二维数组的定义和引用,注意:不能写成a2,3等形式;应该注意下标值应在已定义的数组大小范围内;定义数组时用的a34与引用数组元素时用的a34的区别。,5.2.1二维数组的定义和引用,5.2.2二维数组元素的存储方式,数组的存储结构:以行为主序,5.2.2二维数组元素的存储方式,inta34;,1.分行给二维数组赋初值:如:inta33=1,2,3,4,5,6,7,8,9;2.按数组排列的顺序对元素依次赋初值;如:inta33=1,2,3,4,5,6,7,8,9;,5.2.3二维数组元素的初始化,3.inta34=1,5,9;等价于inta34=1,0,0,0,5,0,0,0,9,0,0,0;4.inta43=1,2,4,5;等价于inta43=1,2,0,4,5,0,0,0,0,0,0,0;,5.2.3二维数组元素的初始化,5.可用初始化的方法来隐含定义二维数组第一维的大小,但不能省略第二维的大小。如:inta34=1,2,3,4,5,6,7,8,9,10,11,12;等价于inta4=1,2,3,4,5,6,7,8,9,10,11,12;,5.2.3二维数组元素的初始化,6.在定义时也可以只对部分元素赋初值而省略第一维长度,但应分行赋初值。如:inta4=0,0,3,0,10;,5.2.3二维数组元素的初始化,例5-3有一个二维数组a34,找出其中的最大元素,并指出所在的行号和列号。,分析:求最大值的NS图如右图所示。,程序如下:,5.2.4二维数组应用举例用,for(i=0;i=2;i+)for(j=0;j=3;j+)if(aijmax)max=aij;row=i;col=j;printf(“max=%d,row=%d,colum=%dn”,max,row,col);,main()inti,j,row=0,col=0,max;staticinta34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;,5.2.4二维数组应用举例,补充题:修改上例算法,使在同一程序中能同时求出最大值和最小值及其各自所在的行列号。,5.2.4二维数组应用举例,例5-4将一个二维数组行和列元素互换,存到另一个二维数组中。,分析设:,程序清单如下:,5.2.4二维数组应用举例,main()inta23=1,2,3,4,5,6;intb32;inti,j;for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;printf(“n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);,5.2.4二维数组应用举例,for(i=0;i=m;i+)for(j=0;j=n;j+),5.2.4二维数组应用举例,返回,5.3.1用一维字符数组存放字符串,一、字符数组的定义char数组名exp;如:charc10;二、字符数组的初始化(1)给字符型数组元素依次赋值。如:charstr6=C,h,i,n,a,0;,(2)直接在赋值号右边给出字符串常量。如:charstr6=“China”;,5.3.1用一维字符数组存放字符串,注意:1.字符数组的长度可经赋初值的方式隐含定义如:charstr=C,h,i,n,a,0;charstr=“China”;2.如初值个数大于数组长度,作语法错误处理。3.如初值个数小于数组长度,不足部分自动赋空(即0)。,5.3.1用一维字符数组存放字符串,三、字符数组的引用,例输出一个字符串。,main()charc12=“Iamaboy.”;inti;for(i=0;i12;i+)printf(“%c”,ci);printf(“n”);,5.3.1用一维字符数组存放字符串,5.3.1用一维字符数组存放字符串,四、字符串和字符串结束标志“China”在存储器中实际占用6个字节:,五、字符串首地址与字符串输入输出1字符数组的输出(1)用格式符“c”控制的printf();如:,main()charc12=“Iamaboy.”;inti;for(i=0;i12;i+)printf(“%c”,ci);printf(“n”);,5.3.1用一维字符数组存放字符串,(2)用格式符“s”控制的printf();如:,main()staticcharc=“China”;printf(“%s”,c);,注意:输出字符不包括“0”;,5.3.1用一维字符数组存放字符串,(3)puts(字符数组);如:,#includemain()staticcharcity=“YangZhou”;inti,j;for(i=0;i0)strcpy(string,str2);printf(“nThelargeststringis:n%sn”,string);,返回,5.3.3字符数组应用举例,直接选择排序算法,返回,直接选择排序算法,main()inti,j,k,temp,a11;for(i=1;iaj)k=j;temp=ai;ai=ak;ak=temp;for(i=1;i11;i+)printf(“%5d”,ai);,评注:并不是每次都要交换的;,if(k!=i)temp=ai;ai=ak;ak=temp;,置换排序算法发散思维导练,返回,置换排序算法发散思维导练,main()inti,j,k,temp,a11;for(i=1;iaj)temp=ai;ai=aj;aj=temp;for(i=1;i11;i+)printf(“%5d”,ai);,冒泡排序算法,返回例,冒泡排序算法,main()inti,j,t,a11;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论