第7章第1节 第六章数组 请数组及数组元素的概念 1数组—具有相同性质的一组数据的有序集合。如: 英语成绩:E[,E[2],…,E|40 E[(i=1,2,,40表示学号) 计算机成绩:C[l,C[2],…,C|40 C[i(i=1,2,,40表示学号) 2.数组元素数组中的每一项数据。 如:E3]表示第3号学生的英语成绩 下标 元素越多,数组越大
第7章 第1节 1.数组——具有相同性质的一组数据的有序集合。如: 英语成绩: E[1], E[2], .... E[40] E[i] (i=1,2,...,40 表示学号) 计算机成绩: C[1], C[2], .... C[40] C[i] (i=1,2,...,40 表示学号) 2. 数组元素——数组中的每一项数据。 如: E[3] 表示第3号学生的英语成绩 下标 元素越多,数组越大 **数组及数组元素的概念
3.数组的维数下标的项数 Ei(i=1,2,,40表示学号丹 维数组 score[ illil(i=1,2,,40;j=1,2,3)二维数组 如:i学号;j学科号(1-英语,2-数学,3物理) 则: score3[23号学生的数学成绩
3. 数组的维数——下标的项数 E[i] (i=1,2,...,40 表示学号)}———一维数组 score[i][j] (i=1,2,...,40; j=1,2,3)———二 维数组 如:i—学号;j—学科号(1-英语,2-数学,3-物理) 则:score[3][2]——3号学生的数学成绩
第7章第1节 §71一维数组的定义与使用 维数组的定义 1形式 类型说明符数组名[常量表达式 int long char 与变量表示元素的个数 foat等 名相同 (从0开始编号) 如:定义 float a[10 即:a0l,a1,a2],…,a9 注意: 类型说明符数组名常量表达式 1.常为整形,或字符型 2.不能含有变量 main( dint n; 解决:根据实际情况,选一个稍大的数 scant(“%d”,&n); main() floatel叫; floate 60;
第7章 第1节 §7.1 一维数组的定义与使用 一. 一维数组的定义 int long char float等 与变量 名相同 表示元素的个数 (从0开始编号) 如:定义 float a[10]; 即:a[0], a[1], a[2], ... , a[9] **注意: 类型说明符 数组名[常量表达式] 1. 常为整形,或字符型 2. 不能含有变量 main( ) { int n; scanf(“%d”,&n); float e[n]; ...... 解决:根据实际情况,选一个稍大的数 main( ) {float e[60]; ...... 1.形式 类型说明符 数组名[常量表达式]
第7章第1节 维数组元素的引用 原则1)不能一次引用整个数组,只能引用数组元素。引用多个 数组元素时,常借助于循环。 2)数组元素的使用与一般的变量相似。 3)数组元素的引用形式: 数组名[下标] 整形常量或整形表达式 例1P141习题75 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要 求改为1,4,5,6,8 解:a0ala2a|3a|4 a[0]a[]a[2]a[3]a[4]a[5]
二 . 一维数组元素的引用 1) 不能一次引用整个数组, 只能引用数组元素 。引用多个 数组元素时,常借助于循环。 2) 数组元素的使用与一般的变量相似。 3) 数组元素的引用形式: 数组名[下标 ] 第7章 第1节 整形常量或整形表达式 例1 P141 习题7.5 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要 求改为1, 4, 5, 6, 8。 解: a[0] a[1] a[2] a[3] a[4] 1 4 5 6 8 a[0] a[1] a[2] a[3] a[4] a[5] 原则
第7章第1节 法 法二:借助于另一个数组作缓冲 main( main( fint a[10],i, j, t; fint a[ 10, b[10,i,j, t; printf("input datd\n”); printf(“ input datd\n”); for(i=0;i<=9;i++ for(1=0;i=9;i++) print(“a%山=“,i); printf(“al%d=“,j): scanf(“%od”,&a[i); scanf(“%d”,&a[i); for(i=0,j=9;i-j;i++,j-) for(i=0;i<=9;i++) tt=ai b9-i=aiJ ai=ajl: for(i=0;i<=9;i++) aj=t for(i=0;i<=9;i++) for(i=0;i<=9;i++) print“a%d=%d“,ial[iD); printf(“a%山=%d“,i,al[i)
第7章 第1节 法一: main( ) {int a[10],i,j,t; printf(“input datd\n”); for (i=0; i<=9; i++) {printf(“a[%d]=“,i); scanf(“%d”,&a[i]); } for(i=0,j=9; i<j; i++,j--) {t=a[i]; a[i]=a[j]; a[j]=t;} for(i=0;i<=9;i++) printf(“a[%d]=%d“,i,a[i]); } 法二:借助于另一个数组作缓冲 main( ) {int a[10],b[10],i,j,t; printf(“input datd\n”); for (i=0; i<=9; i++) {printf(“a[%d]=“,i); scanf(“%d”,&a[i]); } for(i=0; i<=9; i++) b[9-i]=a[i]; for(i=0; i<=9; i++) a[i]=b[i]; for(i=0;i<=9;i++) printf(“a[%d]=%d “,i,a[i]); }
第7章第1节 维数组的初始化 定义数组时,给数组元素赋初值 1.给所有元素赋初值 inta[10={1,2,3,4,5,6,7,8,9,10} 即:a|0=1a1-2……,a9=10 2.给部分元素赋初值 inta[10={1,2,3} 即:a|0=1a1=2a[2}=3a3}=0…a9=10 3.对所有元素赋初值时,可不指定长度 inta[}={1,2,3}; 即:a0}=1al=2a2|=3默认只有三个元素 四.一维数组程序举例 例2(p14172)对10个数据排序。由小到大 解:用选择法
三. 一维数组的初始化 ——定义数组时,给数组元素赋初值 第7章 第1节 1. 给所有元素赋初值 int a[10]={1,2,3,4,5,6,7,8,9,10}; 即:a[0]=1 a[1]=2 ...... a[9]=10 2. 给部分元素赋初值 int a[10]={1,2,3}; 即:a[0]=1 a[1]=2 a[2]=3 a[3]=0...... a[9]=10 3. 对所有元素赋初值时,可不指定长度 int a[ ]={1,2,3}; 即:a[0]=1 a[1]=2 a[2]=3 默认只有三个元素 四. 一维数组程序举例 例2 (p141.7-2)对10个数据排序。 由小到大 解:用选择法
第7章第1节 解:main0 nt a int i, j printf(“ input10data:m”) for(i=1;i<=10;i++) 输入原始数组 printf((“a[%d]=“,j): scanf(%d”,&a[i) for(i-l; K<=9; i++) for(j=i+1ij<=10j+十) 排序 if(hialid ital;a=alil; alil=t; 4 printf((“ the sorted data:Ⅶn”); for(i=1;i=10;i++) 输出 printf((“a%d]=%d“,i,a[i):
第7章 第1节 解:main() { int a[11]; int i, j t; printf(“input 10 data:\n”); for(i=1; ia[j]) {t=a[i]; a[i]=a[j];a[j]=t;} printf(“the sorted data:\n”); for(i=1; i<=10;i++) printf(“a[%d]=%d“,i,a[i]); } 输出 排序 输入原始数组
例3P14174 第7章第1节 解:设有10数组,插入数=a10 插入数介于a0与a[10之间 main( if(x>a o]&&xx)ti; break printf(“ inputx=”); for(j-9;j>=t, j--) scanf(“%d”,&x); aj+1=ajl; fx=a[9)a[10}=x; at=x; if(x=0;i-) for(i=0;i<=10;+) a i+1=a]; printf((%d“,al[i); alu=x
第7章 第1节 例3 P141 7.4 解: 设有a[10]数组, 分三种情况 插入数=a[10] 插入数介于a[0]与a[10]之间 main( ) {int i,j,x,t; int a[11]={1,3,5,7,9,11,13,15,17,19}; printf(“input x=”); scanf(“%d”,&x); if(x>=a[9]) a[10]=x; if(x=0;i--) a[i+1]=a[i]; a[0]=x;} if(x>a[0]&&xx) {t=i; break} for(j=9;j>=t, j--) a[j+1]=a[j]; a[t]=x; } for(i=0;i<=10;i++) printf(“%d “,a[i]); }
72二维数组的定义和引用 第7章第2节 定义 1格式:类型说明符数组名{常量表达式常量表达式;」 例:inta|34; 三行四例 00a0la|02a[0J3 a[10 a 11 a[ 2 a13 a20]a[2l1a[212]a2|3 另一种理解: flat a041,a14a214; 数组名 高 [2|3 2在内存中的存放“按行存放” [22] a010Hajolll a0 2 a[03+ a113 a[lo}→al[lla[l[2}→a[13 a2|0}→a|2}→a[2|2→a[2|3}→ 第二行 fa[llll 3多维数组的定义 与二维数组的方法相同 2y第一行 a all 如:三维数组noab2|34;低 apollo
第7章第2节 7.2 二维数组的定义和引用 一. 定义 1. 格式: 类型说明符 数组名[常量表达式][常量表达式]; 例: int a[3][4]; 三行四例 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] 另一种理解: flaot a[0][4],a[1][4],a[2][4]; 数组名 2.在内存中的存放 “按行存放” a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[2][3] a[2][2] a[0][0] a[0][2] a[0][1] ..... 高 低 3.多维数组的定义 与二维数组的方法相同 如: 三维数组 float b[2][3][4]; a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] 第一行 第二行
第7章第2节 二.二维数组的使用—与一维数组相似 数组名下下标下标 整型表达式「变量 常量 注意:区分数组定义与引用元素的不同 maino fint a[23,c; C=a2|3]; 二维数组的初始化 1.分组给二维数组赋初值 inta|314}={1,2,3,4},5,6,7,83,9,10,112 al0o]a01]a0[2] a2[2]a2l|3
第7章第2节 二. 二维数组的使用——与一维数组相似 数组名[下标][下标] 整型表达式 变量 常量 注意:区分数组定义与引用元素的不同 main() {int a[2][3], c; …… c=a[2][3]; 三. 二维数组的初始化 1. 分组给二维数组赋初值 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; a[0][0] a[0][1] a[0][2] …... a[2][2] a[2][3]