c语言程序设计第8章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《c语言程序设计第8章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件
- 资源描述:
-
1、第 8章 数组类型 第第 8章章 数组类型数组类型 8.1 一维数组一维数组 8.2 二维数组与多维数组二维数组与多维数组 8.3 字符数组与字符串字符数组与字符串 8.4 重命名类型重命名类型 8.5 程序设计举例程序设计举例 第 8章 数组类型 8.1 一维数组一维数组 8.1.1 一维数组的定义一维数组的定义 形式:类型标识符 数组名常量;类型标识符描述的是数组分量的类型,是定义数组类型的基类型,可以是任何类型。数组名代表数组所占存储空间的首地址。常量表示数组的长度,即数组中分量的个数。第 8章 数组类型 例如,定义数组,描述下列数据:(1)100个整数:int num100;(2)10
2、00个学生C语言课程的成绩:float ccj1000;(3)一年中每月的天数:int month12;(4)100种商品的价格:float price100;(5)500个字符类型的数据:char ch500;第 8章 数组类型 说明:(1)数组名命名规则和变量名命名规则相同,都遵循标识符命名规则。(2)数组的长度可以用符号常量描述,但不能用变量,C语言不提供动态数组。(3)数组以线性方式将数组分量依次存储,所占空间等于各分量所占空间之和,即数组分量个数乘以基类型数据所占空间。第 8章 数组类型 8.1.2 一维数组的引用一维数组的引用 数组元素称为下标变量,下标变量通过数组名、下标表达式和
3、中括号运算来描述。下标变量的形式为:数组名下标表达式 例如,对以上定义的num数组、ccj数组,num数组的100个分量为num0、num1、numi、num99,每个分量存放一个整数,numi相当于一个int型变量;ccj数组的1000个分量为ccj1、ccj2、ccji、ccj999,每个分量对应一个学生的成绩,ccji相当于一个float型变量。第 8章 数组类型 说明:(1)下标的取值范围从0到数组长度减1。(2)下标变量相当于基类型变量。(3)下标往往对应于循环控制变量,通过循环、通过下标的变化完成数组所有元素的操作,即整个数组的操作。(4)下标往往隐含有特定的含义。(5)对于下标出
4、界,C语言不进行语法检查。第 8章 数组类型 如果希望下标为i的分量对应第i个数据,可将定义数组的大小增1,如:int num101;float ccj1001;100个整数用num数组的分量num1、num2、num1、num100描述,numi对应于第i个整数。1000个学生的C语言成绩用ccj数组的分量ccj1、ccj2、ccji、ccj1000描述,ccji对应于第i个学生的成绩。第 8章 数组类型 8.1.3 一维数组的初始化一维数组的初始化 初始化形式:存储类别 类型 数组名常量=常量1,常量2,常量n;初始化数据用花括号括起。第 8章 数组类型 例如:(1)static int
5、month12=31,29,31,30,31,30,31,31,30,31,30,31;month0=31,month1=29,month2=31,month3=30,month4=31,month5=30,month6=31,month7=31,month8=30,month9=31,month11=30,month12=31 (2)static char ch5=a,e,i,o,u;ch0=a,ch1=e,ch2=i,ch3=o,ch4=u 第 8章 数组类型 说明:(1)对静态存储数组和外部存储数组,默认初值为0。(2)可以只给一部分数组元素初始化。例如:static int a 50=
6、70,75,60,80,90;相当于a0=70,a1=75,a2=60,a3=80,a4=90,后面没有给出的数组元素之值全部为0。第 8章 数组类型 (3)对数组中全部元素给定初值,可以不给定数组长度,它的长度为后面给出的初值个数。例如:static float x=1.5,2.5,3.5,4.5,5.5;数组x有5个数组元素x0、x1、x2、x3、x4,长度为5。(4)若仅给部分数组元素赋值,则不能省略数组长度。第 8章 数组类型 例例 8 1 求10个数的最大值与最小值,10个数用数组描述。/*程序8 1 求10个数的最大值与最小值*/main()float a10;int i;floa
7、t max=-1e20,min=1e20;for(i=0;i=9;i+)/*输入 10 个数*/scanf(%f,&ai);for(i=0;imax)max=ai;if(aimin)min=ai;printf(最大值=%f,最小值=%f,max,min);第 8章 数组类型 例例 8 2 求某班50个学生C语言课程的平均成绩及每个学生与平均成绩之差。/*程序8-2求C语言课程的平均成绩及每个学生与平均成绩之差*/main()float ccj51;/*C语言成绩数组*/int i;float tcj=0.0;float av,cav51;/*平均成绩av,与平均成绩之差数组cav*/for(i
8、=1;i=50;i+)/*输入每个学生成绩*/第 8章 数组类型 printf(请输入第%d个学生成绩:,i);scanf(“%f”,&ccji);for(i=1;i=50;i+)/*求平均成绩*/tcj+=ccji;av=tcj/50;for(i=1;i=50;i+)/*求与平均成绩之差*/cavi=ccji-av;printf(C语言课程的平均成绩=%5.2fn,av);/*输出*/for(i=1;i=50;i+)printf(第%d个学生与平均成绩之差=%5.2n,i,cavi);第 8章 数组类型 例例 8-3 用一维数组求Fibonacci数列前20项,要求每行输出5个数。/*程序8
9、-3,求Fibonacci数列前20项*/main()static int a20=1,1;/*存放Fibonacci数列前20项的数组*/int i;for(i=2;i20;i+)fi=fi-1+fi-2;printf(Fibonacci数列前20项如下:n);for(i=2;i20;i+)printf(%8d,fi);if(i%5=0)printf(n);/*if语句用来控制换行*/*程序8-3,求Fibonacci数列前20项*/main()static int a20=1,1;/*存放Fibonacci数列前20项的数组*/int i;for(i=2;i20;i+)fi=fi-1+fi
10、-2;printf(Fibonacci数列前20项如下:n);for(i=2;i20;i+)printf(%8d,fi);if(i%5=0)printf(n);/*if语句用来控制换行*/第 8章 数组类型 运行结果:Fibonacci数列前20项如下:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 第 8章 数组类型 8.1.4 一维数组作函数参数一维数组作函数参数 例例 8-4 将例8-2中求C语言课程平均成绩改用函数实现。函数如下:float avf(xcj)/*求C语言课程平均成绩*/float xc
11、j51;int i;float sum=0.0,tav;for(i=1;i=50;i+)sum+=xcji;tav=sum/50;return(tav);第 8章 数组类型 主函数中调用函数avf()来求平均成绩:av=avf(ccj);此时,实参数组为ccj,对应的形参数组为xcj,调用时将实参数组ccj首地址传递给形参数组xcj。请注意本例中数组的第一个分量ccj0、xcj0无意义。对形参数组可以不指定数组大小,在定义数组时数组名后跟空的中括号。在函数中另设一个参数,传递数组元素的个数。如此在函数中实现变相动态数组。第 8章 数组类型 例例 8-5 将上例中函数延伸考虑为求n个学生C语言课
12、程平均成绩。函数如下:float avf(xcj,n)/*求n个学生C语言课程平均成绩*/float xcj,n;int i;float sum=0.0,tav;for(i=1;i=n;i+)sum+=xcji;tav=sum/n;return(tav);第 8章 数组类型 8.2 二维数组与多维数组二维数组与多维数组 8.2.1 二维数组的定义二维数组的定义 形式:类型标识符 数组名常量1常量2;n维数组的定义形式:类型标识符 数组名常量1常量2常量n;类型标识符描述的同样是数组分量的类型,是定义数组类型的基类型,可以是任何类型。数组名代表数组所占存储空间的首地址。常量分别表示数组相应维的长
13、度,数组长度以及数组中分量个数分别等于常量1、常量2、常量n。第 8章 数组类型 (1)上述100个班,每班50个学生一门课程的成绩,定义如下二维数组描述:float cj10050;/*第一维对应班级,第二维对应学生*/(2)1000个学生,30门课程的成绩,定义如下二维数组描述:float acj100030;/*第一维对应学生,第二维对应课程*/(3)上述某高校社会实践调查数据,定义如下三维数组描述:int b323;/*第一维对应年级,第二维对应性别,第三维对应交通工具*/第 8章 数组类型 8.2.2 二维数组的引用二维数组的引用 下标变量的形式为:数组名下标表达式1下标表达式2 多
14、维数组下标变量的形式为:数组名下标表达式1下标表达式2 下标表达式n 例如,对以上定义的acj数组3000个分量分别为:acj00、acj01、acj029、acj10、acj11、acj129、acj9990、acj9991、acj99929,左边下标变化最慢,右边下标变化最快,右边下标变化一遍,左边下标才变化一次。每个分量对应一个学生一门课程的成绩,acjij相当于一个float型变量。第 8章 数组类型 说明:(1)每个下标的取值范围从0到数组长度减1,下标变量同样相当于基类型变量。(2)对于多维数组整体操作的完成需用多重循环,一个下标对应于一重循环控制变量。二维数组的整体操作用两重循环
15、完成,外重循环对应下标1,内重循环对应下标2。(3)其它类似于一维数组处理。第 8章 数组类型 8.2.3 二维数组的初始化二维数组的初始化 初始化形式:存储类别 类型 数组名下标1下标2=常量1,常量2,常量n;例如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;a00=1,a01=2,a02=3,a03=4,a10=5,a11=6,a12=7,a13=8,a20=9,a21=10,a22=11,a23=12 第 8章 数组类型 说明:(1)二维数组的初始化可以分行进行。例如,上面的a数组初始化还可以表示为:static int a34=1,2,3,4,
16、5,6,7,8,9,10,11,12;而定义4行3列的b数组可以表示为:static int b43=1,2,3,4,5,6,7,8,9,10,11,12;(2)可以只对数组中部分元素初始化。例如:a00=1,a01=2,a10=5,a20=9,其它分量初值取默认值,为0。第 8章 数组类型 (3)如果对二维数组中全部元素初始化,则定义数组时第一维的长度可以省略,但第二维的长度不能省略。例如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以写成 static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;但不能写成 static
展开阅读全文