8.数组[精].ppt
文本预览下载声明
第八章 数 组 组合(构造)的数据类型 9.1 数组概述 一、问题的提出 经常要处理大量地类型相同的数据。 例如:输入并存储一个班一门或若干门课程的考试成绩,并进行排序、求平均等。工程上经常处理大量的测试数据。 二、思路:数学上的下标变量。 变量名称相同,不同的下标表示不同的变量。 一个下标------一维数组,二个下标------二维数组 三、数组定义和使用的关键: 数组名称,下标 一个下标变量称为一个数组元素 9.2 一维数组 一、一维数组的定义 类型标识符 数组名[整型常量]; 其中:类型标识符---数组元素的类型 数组名---------标识符 整型常量------数组长度,数组元素的个数 数组长度必须是整型常量或符号常量,不能是变量或表达式。 例:int a[10]; 定义整型数组a,共有10个元素,分别是: a[0], a[1], a[2], … , a[9] //下标从0开始 [ ]----下标运算符,单目,优先级最高 二、一维数组的存储 编译时,根据数组类型及长度,分配连续的存储空间。 存储空间的大小: 数组长度*数据类型占用内存数量 上例中,10个整型数组元素共占用10*2 个存储单元。 数组名是数组第一个元素所占内存单元的地址—即:数组首地址。 数组中其它元素的地址: 数组名+下标,如:a[i]在内存中的地址为:a+i 三、数组元素赋初值 若不给数组元素赋初值,则其值随机数。 1. 数组初始化:在定义数组的同时,给数组元素赋初值 给全部元素赋初值 例: int a[5]={1,2,3,4,5}; 给部分元素赋值 例: int a[10]={1,2,3,4,5}; 前五个元素的值分别是1~5,其余元素的值为 0 给全部元素赋初值时,数组长度可以省略 例: int a[ ]={1,2,3,4,5}; 系统自动把数组长度定义为5 注意:数组初始化只能用数组的定义,数组定义完成之后,只能逐个元素赋值。 2. 用赋值表达式 数组定义完成之后,只能逐个元素赋值。 例:int a[10]; a[0]=1; a[1]=2; …, a[9]=30; 3. 用输入函数 只能逐个元素输入 例:float a[10]; int i; 给个别元素输入: scanf(“%f”, a[0]); i=5; scanf(“%f”, a[i]); 给所有元素输入: for(i=0; i10; i++)scanf(“%f”, a[i]); 三、数组元素的引用 一维数组相当于一列相同类型的变量,每个数组元素都相当一个变量,用法与变量完全相同。 引用数组元素的一般形式 数组名[下标] 下标表示数组元素在数组中的位置,可以用常量、变量或表达式来表示。 例:int a[10], i; a[3]=9; i=5; a[i]=10; a[i+2]=50; a[i]=a[i-1]+a[i-2]; 引用数组元素应注意的问题 数组相当于一列相同类型的变量,不能把数组作为整体使用,只能使用单个元素。 数组长度和下标用[ ]括起来,不能使用 ( ) 或 {} 。 定义数组时,数组长度只能是整型常量或符号常量。 数组元素的下标可用常量、变量或表达式表示。 数组下标不能出界,如: int a[10]; 下标范围:0~9。如果使用 a[10],则下标出界。 特别注意:C语言对数组出界不做检查。如果使用: a[-1], a[10], a[100] 在语法上是正确的,但程序运行结果肯定是错误的 例1. 求十个数的和及平均数 数组的输入和输出 main( ) { int i; float a[10], aver, sum=0; for(i=0;i10;i++) scanf(“%f”,a[i]); for(i=0;i10;i++)sum+=a[i]; aver=sum/10; printf(“%f, %f\n”, sum, aver); } 例2. 求十个数的最大(最小)值 假设法 main() { int a[10],i,max; for(i=0;i10;i++) scanf(%d,a[i]); max=a[0]; for(i=1;i10;i++) if(maxa[i])max=a[i]; printf(max=%d\n,max);
显示全部