文档介绍:共 26 页第2页第六章数组第一节数组的概念第二节一维数组第三节二维数组第四节字符数组共 26 页第3页§6-1 数组的概念?C语言里,计算机如何存放一个数据??一个班学生某一科目的成绩?(80,58,72…)?一个3*3的矩阵?2 3 5 1 0 1 4 5 7 1)具有相同类型 2)固定的数量 3)存在相互关联利用变量存放数据,不同数据存放在不同变量中,相互没有关联?如何存放多个相互间存在关联的数据?数组:具有相同数据类型,数量固定的数据的有序集合数组是一个集合,构成数组的每个数据称为数组元素把这些具有相同类型,数量固定,相互关联的数据,用一个数组来统一存放数据特点:int a; scanf(“%d”,&a);intb; scanf(“%d”,&b);线性关系行列关系例如:存储一个班学生成绩用一维数组floatmark[46]存储一个3*3的矩阵用二维数组inta[3][3]其中:mark、a是数组名。[]内是数组的下标。下标的大小限定数组的长度,表示最多能存放多少数据不同的数组元素:用共同的名字(数组名)和各自的下标来唯一地标识例如:mark[0],mark[1]..mark[45]float,int是数组的数据类型, 它限制了数组元素的类型例如:mark[0]= mark[0]=’a’错误§6-1 数组的概念数组按维度分类:一维数组和二维数组一维数组:可存储一行或一列数据二维数组:可存储多行和多列数据§6-1 数组的分类 2 3 5 1 0 1 4 5 7608590…10060,85,90,…,100例如:int a[3][3];例如:float mark[46];mark[0],mark[1],…,mark[45]a[0][0] a[0][1] a[0][2]a[1][0] a[1][1] a[1][2] a[2][0] a[2][1] a[2][2]46个共 26 页第6页第六章数组1) 一维数组数组的定义数组元素的引用数组的初始化数组定义的格式回顾一下变量定义的格式:数组的定义:§6-2 一维数组?数组的定义声明存在一个数组,说明其名称,长度和类型类型说明符变量名;类型说明符数组名[常量表达式];数组的长度,整数数组元素的类型例如:int ,float例如:int a[10];例如:int a;数组a可以用于存放10个整数标识符1)定义一个数组,可以存放10个整数int a[10]2)定义一个数组,可以存放5个实数float b[5]数组的定义 2)可以同时定义多个数据类型相同的数组,以逗号分隔例如:int a[10],b[5];举例:类型说明符数组名[常量表达式];注意:1)常量表达式不能是变量例如:inta=10; intb[a];错误可以是符号常量例如: #define N 10main(){ intb[N];}等价int a[10];int b[5];:用共同数组名和各自的下标来唯一地标识引用格式:数组名[下标]例如:int a[10]; 可引用的数组元素:a[0],a[1],…,a[9]注意:下标范围是0~(长度-1)a[0]表示第一个数组元素,a[9]表示最后一个数组元素常见错误:a[10]=3;引用是重点,即如何从数组中提取数据,和存放数据到数组中提取数据:printf(“%d”,a[0]); 或int b=a[0];存放数据:scanf(“%d”,&a[0]); 或a[0]=2;数组存取数据:输入输出语句和赋值操作?举例:输入任意10个整数,要求按序存放在数组中,并且依次输出数组元素的引用main(){ int a[10];int i;for ( i=0; i<=9; i++ ){scanf(”%d”, &a[i]);}for( i=0; i<=9; i++ ){printf (”%d ”,a[i]);}}如何对整个数组的数据进行存取?数据结构:int a[10]算法:1)输入10个数,依次存放在数组中2)依次输出数组中存放的10个数循环1:int i=0 to 9输入第i个数,存放到a[i]中 i++循环2:int i=0 to 9输出数组中数据元素a[i] i++常用循环对数组中的数组元素逐个输入、输出、或进行处理