C语言程序设计(第二版)-电子教案-任正云 第7章数组

上传人:E**** 文档编号:89382724 上传时间:2019-05-24 格式:PPT 页数:30 大小:711.50KB
返回 下载 相关 举报
C语言程序设计(第二版)-电子教案-任正云 第7章数组_第1页
第1页 / 共30页
C语言程序设计(第二版)-电子教案-任正云 第7章数组_第2页
第2页 / 共30页
C语言程序设计(第二版)-电子教案-任正云 第7章数组_第3页
第3页 / 共30页
C语言程序设计(第二版)-电子教案-任正云 第7章数组_第4页
第4页 / 共30页
C语言程序设计(第二版)-电子教案-任正云 第7章数组_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《C语言程序设计(第二版)-电子教案-任正云 第7章数组》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版)-电子教案-任正云 第7章数组(30页珍藏版)》请在金锄头文库上搜索。

1、第七章 数组,The C Programming Language Chapter 7 Arrays,构造数据类型; 有序数据的集合; 可以看成是具有相同名字不同下标的同一数据类型的简单变量的集合.,一维数组 二维数组 字符数组,7.1 一维数组 定义: 类型说明 数组名正整型常量表达式;,定义数组名,数组中元素的个数;, :下标的界定符,不能用 ( ),注意事项: 数组必须先定义后使用; 只能一个一个使用数组元素; 数组元素的使用 : 例 ai ( i: 0N-1),例 int i=15; int datai; /表达式不能使变量,例 int data5; data5=10; /超出范围,例

2、 int a10; printf(“%d“,a); () = for(j=0; j10; j+) printf(“%dt“,aj); (),7.1 一维数组,7.1.1 一维数组的定义 一维数组的定义格式为: 类型说明符 数组名常量表达式 (1)int a10;定义了一个一维整型数组,含有10个元素,分别是:a0,a1,a2,a9。该数组的基本类型为整型,10个元素都可作为整型变量使用。 (2)float b5;定义了一个一维实型数组,含有5个元素,分别是:b0,b1,b2,b3,b4。该数组的基本类型为实型,5个元素都可作为实型变量使用。 说明: (1)数组名命名规则遵从标识符命名规则并遵循

3、“见名知义”原则。 (2)数组名后为方括号,不能用圆括号。如:int a(10)是非法的。 (3)定义格式中的“常量表达式”表示元素的个数,即数组长度。数组元素的下标从0开始,上面例题中的a9及b4分别是各自数组中的最后一个元素,而a10,b5都不是数组的元素,不能用。 (4)数组定义格式中的“常量表达式”可以包含常量和符号常量,但不能包含变量。,【例7.2】(1)下面的用法是错的(因为m是变量)。 int m; scanf(“%d“,7.1.2 一维数组的初始化,数组的初始化是在定义数组的同时就给数组中的元素赋予一个初值。 一维数组初始化的方法如下: (1)定义数组时对所有元素赋初值。 如i

4、nt a10=0,1,2,3,4,5,6,7,8,9,其中花括号内的值依次赋给数组中各个元素,即相当于执行:a0=0,a1=1, a2=3 ,a9=9。 (2)可以只给一部分元素赋初值。 例如:int a5=1,3,5; 定义a为5个元素的数组,但只给前三个元素a0、a1、a2赋初值,后两个元素(a3、a4)系统自动赋初值零。 (3)对全部数组元素赋初值时,可以不指定长度。 例如:int a =0,1,2,3,4; 这相当于定义了一个含有5个元素的整型数组,其初值分别为1,2,3,4,5。,7.1.3 一维数组元素的引用,数组必须先定义后使用。 C语言规定只能逐个引用数组元素而不能一次引用整个

5、,下标可以是整型常量或整型表达式。,【例7.3】 数组元素的引用。 main() int i,a10; for(i=0;i=0;i-) printf(“%5d“,ai); /*输出第i个元素值*/ ,运行结果如下: 9 8 7 6 5 4 3 2 1 0,7.1.4 一维数组的使用,【例7.4】 一维数组的输入与输出。 # include“stdio.h“ main() int i; int a4; /*说明一个元素个数为4的整型数组*/ printf(“n输入数组a(共4个整数):“); for(i=0;i4;i+) scanf(“%d“, ,运行结果为: 输入数组a(共4个整数):4 5

6、6 12 输出数组a:a0=4 a1=5 a2=6 a3=12,注意以下几点: (1)scanf和printf不能一次处理整个数组的值,只能逐个处理数组元素,当下标i取不同 的值时,ai代表不同的数组元素,因此这里往往会用到循环语句。 (2)应用循环语句处理数组元素时,应正确控制下标变量的范围,即应写成: for(i=0;i4;i+)或for(i=0;i=3;i+) 表示i 从0变化到3。 (3)用输入语句获取数据给数组元素时,数组元素前应加上取地址符,【例7.5】 引用数组输出Fibonacci数列的前20项,#include main() int i; int f20=1,1; for(i

7、=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(“n“); printf(“%12d“,fi); ,运行结果为: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181,【例7.6】求数组元素中 的最大值最小值。,# include “stdio.h“ main() int term10; int i,max,min; printf(“请输入10个整数:“); for(i=1;imax) max=termi; printf(“最大数为%d“,max); p

8、rintf(“最小数为%d“,min); ,运行结果如下: 请输入10个整数:3 55 6 4 45 10 -2 8 12 30 最大数为55,最小数为-2,例5计算并输出全班30个学生C语言程序设计课程的平均成绩, 以及每个人的成绩与平均成绩之差。,int main(void) float x1,x2, ,x30,sum, average; printf(“input 30 scores:n“); scanf(“%f%f%f“, ,# include “stdio.h“ # define NUMBERS 30 int main(void) int i; float xNUMBERS,sum,

9、average; sum=0; printf(“input %d scores:n“, NUMBERS); for(i=0;i NUMBERS;i+) scanf(“%f“, ,运行结果如下: input 30 scores: 88 79 89 91 65 56 76 78 74 73 85 90 73 97 83 62 73 84 96 86 99 81 84 85 70 80 66 98 93 100 average=81.80 x0-average=6.20 x1-average=-2.80 x28-average=11.20 x29-average=18.20,【例7.8】 输入N个整

10、数,将它们按从小到大的次序排列后输出。,/*sort:sort v0,v1,vn-1 into increasing order */ void sort(int v,int n) int i,j,temp; for(i=0;ivj+1) /*交换*/ temp=vj; vj=vj+1; vj+1=temp; # include “stdio.h“ # define N 5 int main() int aN,i; printf(“input %d numbers:n“,N); for(i=0;iN;i+) scanf(“%d“, ,运行结果如下: input 5 numbers: 45 23

11、 87 0 31 0 23 31 45 87,【例7.9】 线性查找。其思路是:从数组的第一个元素开始,依次将要 查找的数和数组中的元素比较,直到找到该数或找遍整个数组为止。,# include “stdio.h“ main() int table10=0,2,4,6,8,10,12,14,16,18; int x,i,find=0;/* find 用以判断查找是否成功,0表示未成功,1表示成功,初始为0*/ printf(“请输入要查找的数:“); scanf(“%d“, ,两次运行结果如下: 请输入要查找的数:5 没有找到数5 请输入要查找的数:8 8在table4中,7.2.1 二维数组

12、和多维数组,如果有一个一维数组,它的每一个元素是类型相同的一维数组(数组的类型相同包括其大小相同并且各元素的类型相同)时,就形成了一个二维数组。 二维数组的一般定义形式为: 类型标识符 数组名常量表达式常量表达式; 如:int i,a3,b34,c25; 多维数组的定义方法与定义二维数组相仿。 如:int a232;,7.2.2 二维数组的初始化,(1)分行给二维数组赋初值。 如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2)可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。 如:int a34= 1,2,3,4,5,6,7,8,9,10,11,1

13、2; (3)可以对部分元素赋初值。 如:int a34=1,5,9; 它的作用是只对各行第1列的元素赋初值,其余元素值自动为0。 赋初值后数组各元素为: ( 4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组对第一维的长度可以不指定,但第二维的长度不能省。 如:int a4=1,2,3,4,5,6,7,8,9,10,11,12; 等价:int a34=1,2,3,4,5,6,7,8,9,10,11,12;,7.2.3 二维数组和多维数组的引用,数组必须“先定义,后引用”。 引用二维数组元素的形式为: 数组名下标下标 ; 例如:a02 表示引用二维数组a中第1行第3列元素。 引用三维数

14、组的元素的形式为:a012 ;,【例7.10】 向一个三维数组输入值并输出此数组全部元素。,main() int i,j,k,a232; for(i=0;i2;i+) for(j=0;j3;j+) for(k=0;k2;k+) scanf(“%d“, ,运行情况如下: 1 2 3 4 5 6 7 8 9 10 11 12 a000=1 a001=2 a010=3 a011=4 a020=5 a021=6 a100=7 a101=8 a110=9 a111=10 a120=11 a121=12,7.2.4 二维数组的经典实例,【例7.11】 求一个4*4阶矩阵元素的最小值。,# include

15、“stdio.h“ main() static int a44=12,76,4,1,-19,28,55,-6, 2,10,13,-2,3,-9,112,111; /*矩阵元素初始化*/ int i,j,row,colum,min; /*row:行,colum:列,min:最小值*/ min=a00; /*遍历所有的元素,求出最小值*/ for(i=0;i4;i+) for(j=0;j4;j+) if(aijmin) min=aij; /*记录最小值*/ row=i,colum=j; /*记录最小值所属元素的下标*/ printf(“最小值=%d,位于矩阵第%d行,第%d列n“,min,row+1,colu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号