C语言第六章-数组.ppt_第1页
C语言第六章-数组.ppt_第2页
C语言第六章-数组.ppt_第3页
C语言第六章-数组.ppt_第4页
C语言第六章-数组.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第6章数组,什么是构造类型?所谓构造类型是指由基本类型数据按一定的规则组成的,是用户自己按规则定义的。数组是构造类型之一。什么是数组?在数学中我们学过数列、矩阵的概念,数列通常表示为:a1、a2、a3、.、an矩阵通常表示为:,在C语言中表示数组和矩阵的方法是:数组:a0、a1、a2、a3、a4、a5其中a:称为数组名。方括号中的数:称为下标下标是一个数时,也就是数列,称为一维数组。下标是两个数时,也就是矩阵,称为二维数组。还有三维、四维数组等,例如:有五名学生的一组学号:2004035012、2004035013、2004035014、2004035015、2004035016。如果用数组来表示的话可以用统一的数组名比如:num,用下标区别每个变量。即num0、num1、num2、num3、um4表示一个学号数组。,一维数组在内存的存储形式:num就是数组存储区域的首地址,即num=200。,一组变量,6.1一维数组的定义和引用,2、一维数组的引用数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:数组名下标其中:下标可以是常量、变量或表达式。,例inta10;scanf(“%d”,a);,必须inta10;for(j=0;j10;j+)scanf(“%d”,例如:intk=5;a1、a1+5、ak、a10-k,(),(),3、一维数组元素值的输入与输出例如:main()inti,a10;for(i=0;i10;i+)scanf(“%d”,一维数组元素的输出,一维数组元素的输入,例6.1#includevoidmain()inti,a10;for(i=0;i=0;i-)printf(“%2d”,ai);printf(“n”);,结果:9876543210_,使用数组定义和数组元素时的几点注意:1、把数组定义时方括号中的数和元素下标值区别开,数组定义时方括号中的数表示数组含有的元素个数元素下标值是标识具体的数组元素的。方括号中的数不能是变量,只能是常量。2、数组元素的下标可以是常量,也可以是变量,其值必须是非负数,如果是小数,系统自动取整。3、数组必须先定义后使用。4、系统不检查数组元素下标的越界问题。5、一维数组元素的输入、输出使用单层循环语句。,4、一维数组的初始化,在定义数组时,为数组元素赋初值(在编译阶段使之得到初值),说明:数组不初始化,其元素值为随机数,当全部数组元素赋初值时,可不指定数组长度,如inta5=6,2,3;等价于:a0=6;a1=2;a2=3;a3=0;a4=0;如inta3=6,2,3,5,1;(),只给部分数组元素赋初值,inta=1,2,3,4,5,6;编译系统根据初值个数确定数组维数值,inta5=1,2,3,4,5;等价于:a0=1;a1=2;a2=3;a3=4;a4=5;,初始化方式,例6.2用数组求Fibonacci数列前20个数,#includemain()inti;intf20=1,1;for(i=2;ia3,则交换值;依次类推,直至第7个数和第8个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上,即在a8中。(2)对前7个数进行第二趟冒泡排序,结果使次大的数被安置在第7个元素位置,即在a7中。(3)重复上述过程,共经过7趟冒泡排序后,排序结束。,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,#includemain()inta9,i,j,t;printf(Input8numbers:n);for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;printf(Thesortednumbers:n);for(i=1;i9;i+)printf(%d,ai);,6.2二维数组及多维数组一维数组通常是用来处理数列问题的例如:a1、a2、a3、.、an、.可以用一维来表示。二维数组通常是用来矩阵问题的,例如下面的数表(矩阵):,a11,a12,a13,a14,a21,a22,a23,a24,a31,a32,a33,a34,34,可以用二维数组来表示。,1、二维数组的定义定义方式:数据类型数组名常量表达式常量表达式;,数组元素的存放顺序在内存中按行顺序存放。即先存第一行,接着存第二行,以此类推。例如:,例inta34;floatb25;inta3,4;(),行数,列数,元素个数=行数*列数,2、二维数组理解,由按上述定义的二维数组的方式(比如:inta34),我们可以把二维数组看成是一种特殊的一维数组:它的元素又是一维数组。例如,把a看成是一维数组,它有3个元素,分别是:a0、a1、a2,每个元素又是一个包含4个元素的一维数组。如下表:,其中a是数组a0、a1、a2的数组名而a0是数组a00、a01、a02、a03的数组名a1是数组a10、a11、a12、a13的数组名a2是数组a20、a21、a22、a23的数组名,3、二维数组元素的引用形式:数组名下标下标4、二维数组的输入输出。使用双层循环。例如:main()inta45,i,j;for(i=1;i=3;i+)for(j=1;j数组长度语法错误;2初值个数数组长度其余元素为0;3初值个数=数组长度长度可省;如:chara=B,O,Y;4可定义并初始化多维数组。如:chara23=b,o,y,d,o,g,字符数组的逐个引用,例:#includevoidmain()inti;chara5=a,h,a,t;for(i=0;iHello!”);elseif(strcmp(str1,str2)=0)printf(“Hell0!=Hello!”);elseprintf(“Hell0!0)strcpy(str,str3);输出部分:printf(“nthelargeststringis:%sn”,str);,例2、有三个字符串,找出其中最大者,#include#includemain()charstring20,str320;inti;for(i=0;i0)strcpy(string,str0);elsestrcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);printf(nThelargeststringis:n%sn,string);,定义一个两维字符数组str320即3行20列。每一行可以容纳20个字符。如下图:,1、若有代数表达式,则不正确的C语言表达式是().A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*32、下列运算符中优先级最高的是()A)B)+C)elseprintf(%dn”,m-);A)4B)5C)6D)7,6、以下程序输出结果是()main()inta=100,x=10,y=20,ok1=5,ok2=0;if(xy)if(y!=10)if(!ok1)a=1;elseif(ok2)a=10;a=-1;printf(“%dn”,a);A)1B)0C)1D)值不确定,C,C,7、下面程序段的运行结果是()intn=0;while(n+=2);printf(“%d”,n);A)2B)3C)4D)有语法错误,8、以下正确计算12310的程序段是()A)doi=1;s=1;B)doi=1;s=0;s=s*i;s=s*i;i+;i+;while(i=10);while(i=10);C)i=1;s=1;D)i=1;s=0;dos=s*i;dos=s*i;i+;i+;while(i=10);while(i+y;x=i+)i=x;B)for(;x+=i);C)while(1)x+;D)for(i=10;i-)sum+=i;,11、下面程序的运行结果是()#includemain()intj,b,k=0;for(j=1;j=0)k+;printf(“%d,%d”,k,b);A)3,-1B)8,-1C)3,0D)8,-2,A,D,12、下面程序段()for(t=1;t=0时什么也不输出printf(“%3d”,t);C)printf函数永远也不执行D)最多允许输出100个非负整数。,二、读程序,写出运行结果1、main()2、main()intx,y,z;inta=-10,b=-3;x=1;y=2;z=3;printf(“%d,”,-a%b);x=y-0)s=a+b;if(j%2!=0)if(a0)y=y+j+;if(c

温馨提示

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

最新文档

评论

0/150

提交评论