第8章数组v1ppt课件_第1页
第8章数组v1ppt课件_第2页
第8章数组v1ppt课件_第3页
第8章数组v1ppt课件_第4页
第8章数组v1ppt课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、高级语言程序设计 南京邮电大学传媒技术学院1第八章第八章数数 组组高级语言程序设计 南京邮电大学传媒技术学院8.1 8.1 概述概述 l 数组的概念数组的概念数组是由假设干数组是由假设干 类型一样类型一样 的相关数据按的相关数据按 一定顺序存储一定顺序存储 在一同构成的在一同构成的 一组数据一组数据 集合。集合。l 数组的用途数组的用途l保管大量同类型的相关数据保管大量同类型的相关数据l 例如:学生成果例如:学生成果l 数组的特点数组的特点l快速地随机访问快速地随机访问l一旦定义,不能改动大小一旦定义,不能改动大小l数组可分为一维、二维、多维数组数组可分为一维、二维、多维数组高级语言程序设计

2、南京邮电大学传媒技术学院8.2 一维数组的定义一维数组的定义定义语法:数据类型定义语法:数据类型 数组名数组名数组长度数组长度例如:例如: int score100;/*数组数组*/ 数组的数组的数据类型数据类型数组名数组名2000201920192019201920192019 数组长度数组长度score高级语言程序设计 南京邮电大学传媒技术学院一维数组的初始化一维数组的初始化 数组的初始化是指在定义数组时给数组赋初值。数组的初始化是指在定义数组时给数组赋初值。1. 在定义数组时赋全部初值;在定义数组时赋全部初值; int a10=0,1,2,3,4,5,6,7,8,9;2. 部分赋值部分赋

3、值,未明确写出的均初始化为未明确写出的均初始化为0; int a10=0,1,2,3,4;3. 赋值时不指定数组长度,赋初值元素的个数为数组长赋值时不指定数组长度,赋初值元素的个数为数组长度。度。 int a=0,1,2,3,4; /*数组只需数组只需5个元素个元素*/高级语言程序设计 南京邮电大学传媒技术学院一维数组元素的援用一维数组元素的援用数组名数组名下标下标 下标值的范围是下标值的范围是0到数组长度减到数组长度减1; float f10; f0 f1 f2 f3 f8 f9 f0=20; f1=39; f2=40; f3=60; f9=100;一个数组元素就好像一个简单变量。一个数组元

4、素就好像一个简单变量。a0=a5+a7-a2*3; 元素下标可以是常量和表达式元素下标可以是常量和表达式ai=0; 元素下标也可以是变量元素下标也可以是变量一维数组的援用一维数组的援用高级语言程序设计 南京邮电大学传媒技术学院留意留意1对数组定义时所声明的类型实践上对数组定义时所声明的类型实践上是指数组元素的取值类型;对于同是指数组元素的取值类型;对于同一个数组,其一切元素的数据类型一个数组,其一切元素的数据类型必需是一样的。必需是一样的。2数组名的命名应符合标识符的定义数组名的命名应符合标识符的定义规那么。规那么。3数组名不能与其它变量名一样。数组名不能与其它变量名一样。4数组定义时,方括号

5、中的常量表达数组定义时,方括号中的常量表达式阐明了数组元素的个数,如式阐明了数组元素的个数,如a5表表示数组示数组a有有5个元素。但是其下标是个元素。但是其下标是从从0开场编号的开场编号的 。高级语言程序设计 南京邮电大学传媒技术学院留意留意5在定义时,不能在方括号中用变在定义时,不能在方括号中用变量来表示元素的个数,但是可以是量来表示元素的个数,但是可以是常量或常量表达式。常量或常量表达式。6允许在同一个类型阐明中,同时允许在同一个类型阐明中,同时阐明多个数组和多个变量。例如:阐明多个数组和多个变量。例如:int a, b, c, d, k110, k220;7可以越界访问数组的元素,但这可

6、以越界访问数组的元素,但这样做会导致不可预料的结果,甚至样做会导致不可预料的结果,甚至于呵斥系统的解体执行写操作。于呵斥系统的解体执行写操作。高级语言程序设计 南京邮电大学传媒技术学院一维数组的定义、赋值和援用。一维数组的定义、赋值和援用。 【exp8-1】#include void main() int i,a10; for(i=0;i=0;i-) printf(%d ,ai); /依次倒序输出各依次倒序输出各个元素个元素程序运转结果:程序运转结果:9 8 7 6 5 4 3 2 1 0高级语言程序设计 南京邮电大学传媒技术学院例例8-2找出一维数组中的最大元素。高级语言程序设计 南京邮电大

7、学传媒技术学院8.3 二维数组的定义二维数组的定义类型阐明符类型阐明符 数组名数组名常量表达式常量表达式常量表达式常量表达式 例如:例如: int score450; 数组的数组的数据类型数据类型数组名:数组名:数组首址数组首址行行l 援用数组元素:援用数组元素:score00、score01、 score049 score10、score11、 score149 score20、score21、 score249 score30、score31、 score349l 系统在内存中分配延续系统在内存中分配延续4*50 个个int数据类型的空间给数组。数据类型的空间给数组。存放顺序:按行存放,先

8、顺序存放第一行的元素,再存放存放顺序:按行存放,先顺序存放第一行的元素,再存放第二行的元素第二行的元素 列列高级语言程序设计 南京邮电大学传媒技术学院l数组定义后,其元素值是随机数。数组定义后,其元素值是随机数。l在定义数组的同时,为其元素赋值,称为赋在定义数组的同时,为其元素赋值,称为赋初值。初值。lint a22=1,2,3,4;lint a22=1,2,3,4;lint Arr23=1,1,2;lint matrix4=1,2,3,4,1二维数组的初始化二维数组的初始化高级语言程序设计 南京邮电大学传媒技术学院int matrix = 1,2,3,4,5,6,7,8,9,10,11,12

9、;int matrix4=1,2,3,4,1;int matrix4 = 1,2,3,4,5,6,7,8,9;int matrix4 = 1,2,3,4,5,6,7,8,9,10;编译通不过编译通不过343434二维数组的初始化二维数组的初始化高级语言程序设计 南京邮电大学传媒技术学院二维数组的援用二维数组的援用程序中援用的是数组中一个元素,必需用下标来指定。程序中援用的是数组中一个元素,必需用下标来指定。float a44 a00 a01 a02 a03a10 a11 a12 a13 a20 a21 a22 a23a30 a31 a32 a33对二维数组的每个元素可以当作普通变量来运用:对二

10、维数组的每个元素可以当作普通变量来运用:赋值、各种运算。赋值、各种运算。高级语言程序设计 南京邮电大学传媒技术学院二维数组的援用二维数组的援用在程序中为数组赋值的方法在程序中为数组赋值的方法1. 用用scanf语句由用户依次输入:语句由用户依次输入:for (i=1;i=3;i+) for (j=1;j=4;j+) scanf(“%d,&aij);2. 由循环变量用循环赋值:由循环变量用循环赋值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 for (i=0;i4;i+) (for j=0;j4;j+) aij = 4*i+j+1;高级语言程序设计 南京邮电大

11、学传媒技术学院二维数组程序举例二维数组程序举例将一个二维数组行和列元素互换将一个二维数组行和列元素互换,存到存到另一个数组中另一个数组中 1 4a= 1 2 3 b= 2 5 4 5 6 3 6for (i=0;i2;i+) for (j=0;j3;j+) bji=aijfor (i=0;i3;i+)for (i=0;i3;i+) for (j=0;j2;j+) for (j=0;j2;j+) bij=aji bij=aji高级语言程序设计 南京邮电大学传媒技术学院课堂练习课堂练习1.以下对一维数组以下对一维数组a的正确阐明是的正确阐明是: A) char a(10) ; B) int a10

12、 ; C) int k=5,ak; D) char a =a,b,c;2.以下对二维数组以下对二维数组a的正确阐明是的正确阐明是: A) char a105 ; B) int a23 ; C) int k=5,akk-2; D) char a43=“abc,“bcd,“cde; E) int a34 = 1,5,9;高级语言程序设计 南京邮电大学传媒技术学院将数组中的元素颠倒顺序排放将数组中的元素颠倒顺序排放#include void main()int a10=0,1,2,3,4,5,6,7,8,9;int i, t;for(i=0; i=4; i+)t=ai; ai=a9-i; a9-i=

13、t;8.4 运用举例运用举例高级语言程序设计 南京邮电大学传媒技术学院求求Fibnacci数列数列1,1,2,3,5,8,13,21,.【exp8_3】 初值初值 f0=1,f1=1 fi=fi-2 + fi-1 完好程序:完好程序:void main() int i, f20=1,1; for (i=2,i=19;i+) fi=fi-2+fi-1; for (i=2,i=19;i+) printf(%12d,fi); 高级语言程序设计 南京邮电大学传媒技术学院选择法排序选择法排序#include void main() int i,j,min,t,data10=3,6,2,5,8,1,0,4

14、,7,9; for(i=0;i=8;i+) min=i; for(j=i+1;j=9;j+) if(datajdatamin) min=j; if(min!=i) t=datai; datai= datamin; datamin=t; 高级语言程序设计 南京邮电大学传媒技术学院在无序数组中查找给定值初次出现的位置在无序数组中查找给定值初次出现的位置 如:如:10 1 20 39 9 4 12 43 33 4 19找找4的位置的位置从第从第0个元素到最后一个元素依次与被找元素个元素到最后一个元素依次与被找元素比较比较,相等那么停顿查找。相等那么停顿查找。高级语言程序设计 南京邮电大学传媒技术学院

15、void main() int a10,i,num; for (i=0;i10;i+) scanf(“%d,&ai); printf(“输入被查找的数输入被查找的数n); scanf(“%d,&num); for (i=0;i10;i+) if (ai=num) break; if (i=9) printf ( “被查找的数是第被查找的数是第%d个数个数n,i+1); else printf(“没找到没找到!n);高级语言程序设计 南京邮电大学传媒技术学院思索另外一种种情况,在有序数组中插入一个数。首思索另外一种种情况,在有序数组中插入一个数。首先需求确定该元素的位置。先需求确定该元素的位置。

16、1 3 5 7 9 116i i第一步:从第第一步:从第0个元素开场比较个元素开场比较,直到直到6小于或等于某个小于或等于某个数时停顿数时停顿,该数的位置即为所求。该数的位置即为所求。 i = 0; while (i =num) break; else i+; k=i;高级语言程序设计 南京邮电大学传媒技术学院8.4 运用举例运用举例 第二步:数组右移一位第二步:数组右移一位从最后一个元素右移从最后一个元素右移 for (i=6;i=k;i-) ai+1=ai;1 3 5 7 9 111 3 5 7 9 11k1 3 5 7 9 111 3 5 7 9 11k1 3 5 6 7 9 111 3

17、 5 6 7 9 11k 第三步:存放第三步:存放ak=num;高级语言程序设计 南京邮电大学传媒技术学院假设需求将给定的某个数插入到有序的数组中,可假设需求将给定的某个数插入到有序的数组中,可以运用如下的五个步骤:以运用如下的五个步骤:建立数组建立数组排序排序找出被插入值所在的位置找出被插入值所在的位置从该位置起到最后的一切元素右移一位从该位置起到最后的一切元素右移一位将待插入数值放入上一步空出的位置将待插入数值放入上一步空出的位置参考【参考【exp8_6】8.4 运用举例运用举例高级语言程序设计 南京邮电大学传媒技术学院8.4 运用举例运用举例#include stdio.hmain()

18、int a21; int i,j,k,num; printf(输入输入20个整数个整数n); for (i=0;i20;i+) scanf(%d,&ai); /*输入输入*/ for (i=0;i19;i+) for (j=0;jaj+1) t=aj;aj=aj+1;aj+1=t; /*排序排序*/ for (i=0;i20;i+) printf(%3d,ai); /*输出排序结果输出排序结果*/ printf(输入要被插入的数输入要被插入的数n); scanf(%d,&num); 高级语言程序设计 南京邮电大学传媒技术学院 i=0; while (i=num) break; else i+;

19、 /*查找查找*/ k=i; for (i=19;i=k;i-) /*右移一位右移一位*/ ai+1=ai; ak=num; /*插入插入*/ for (i=0;i21;i+) printf(“%3d,ai); /*输出结果输出结果*/高级语言程序设计 南京邮电大学传媒技术学院本章总结本章总结l 一维数组和二维数组的定义、初始一维数组和二维数组的定义、初始化和援用化和援用l 常用的算法:在数组中查找、插入常用的算法:在数组中查找、插入元素、排序等元素、排序等高级语言程序设计 南京邮电大学传媒技术学院课后作业课后作业1、 编程实现从键盘输入编程实现从键盘输入20个整数,统计个整数,统计其中正数的

20、个数,并计算输出一切正数之其中正数的个数,并计算输出一切正数之和。和。2、8.9, 8.10高级语言程序设计 南京邮电大学传媒技术学院输入输入100个个050的整数,统计每个数出现的次数的整数,统计每个数出现的次数【exp8_2】分析分析:1 需求需求50个变量用于统计个变量用于统计 int count51。2 读一个字符,在相应的变量上加读一个字符,在相应的变量上加1countn+countn+n=0 count0+n=0 count0+n=1 count1+ n=1 count1+ n=50 count50+n=50 count50+0n0n1n50.0 00000000000 01111111 11 1 1111111111115050 50 50 50 50 50 50 505050 50505050 50505050505050505050505050

温馨提示

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

评论

0/150

提交评论