c语言课件 第六章.ppt
《c语言课件 第六章.ppt》由会员分享,可在线阅读,更多相关《c语言课件 第六章.ppt(52页珍藏版)》请在三一办公上搜索。
1、共 52 页 第 1 页,数 组,第六章,C语言程序设计,共 52 页 第 2 页,本章要点1.建立数组的概念;2.掌握一维数组和二维数组的定义、引用、存储结构和初始化方法;3.掌握一维字符数组的输入输出;4.掌握字符串处理函数的使用;5.掌握用数组进行编程的技术。,共 52 页 第 3 页,6.1 数组的概念,如何处理一个班学生的学习成绩?一行文字怎样存储?一个矩阵怎样存储?.,问题的提出:,一组具有相同数据类型的数据的 有序集合,这些数据的特点:1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据提供了一种构造数据类型:数组。,共 52 页 第 4 页,数组是一组有序的
2、、类型相同的数据的集合,这些数据被称为数组的元素。,共 52 页 第 5 页,6.2 一维数组,6.2.1 一维数组的定义和引用1.定义一维数组的一般方式:类型说明符 数组名常量表达式;,说明:类型说明符:数组的类型。数组名同变量名命名规则相同。常量表达式指明数组中元素个数,必须大于零。可以是数值常量、符号常量和字符常量。例如:float mark100;char str200;int a10;,共 52 页 第 6 页,其中:mark、str、a 是数组名。方括号内是数组的长度。下标的个数称为数组的维数,mark、str是一维数组、a是二维数组。数组的成员称为数组元素。数组元素的类型称为该数
3、组的基类型。数组mark的基类型是float,数组str的基类型是char。,例如:存储学生成绩用实型数组 mark100,存储一行文字用字符数组 str200,存储一个4*6的矩阵用二维整型数组 a46。,共 52 页 第 7 页,说明:(1)数组名后是用方括号而不是圆括号。,(2)数组定义中的常量表达式表示数组元素个数。必须是大于零的常量。如:int a0,d(6);/*错误*/int b-8;/*错误*/int c2+3;/*正确*/(3)语言中不允许对数组的大小作动态定义。数组的说明语句必须在可执行语句之前。,#define N 5int aN;,int n;scanf(“%d”,共
4、52 页 第 8 页,2.一维数组的引用 C 语言规定,只能引用单个数组元素,不能一次引用整个数组。数组元素的引用形式:数组名 下标 如a3下标可以是整型常量、整型变量或整型表达式。如:a3=a0+ai+1;下标的值是数组元素的序号,且从0开始,直到n-1.int a10,说明数组a一共有10个元素,起始值是0。数组a的10个元素分别是:a0、a1、a9。数组的输入输出应采用循环的方法.int a10;for(i=0;i10;i+)scanf(”%d”,下标指出在数组中第几个元素,共 52 页 第 9 页,数组中的每个元素在功能上等价于一个一般的变量。例如:输入100个学生成绩,并求出总成绩。
5、,引用数组元素的注意事项:,85,82,85,63,78,90,63,85,85,148,82,7950,148,226,316,7950,优点:数据重用 数据有序,共 52 页 第 10 页,引用数组元素时,根据首地址和下标,自动计算出该元素的实际地址,取出该地址的内容进行操作。,如引用 mark2:(1)计算 2000+2*4=2008(2)取出2008的内容,下标与地址的关系,为下标运算符,数组名、数组元素是两种不同性质的数据。,数组名是数组的首地址,是一个地址常量。,数组元素则是数值。,共 52 页 第 11 页,6.2.2 一维数组的初始化,在数组定义时为数组元素赋初值称为数组初始化
6、.,方法:将初值依次写在花括号 内。,如:int a5=2,4,6,8,10;,存储形式:,存储单元,共 52 页 第 12 页,(1)给数组中部分元素赋初值,其他元素按零值处理。如:int a9=1,2;则 a0=1,a1=2,a2a8值全为0。,(2)对数组元素全部赋值可以不指定长度。int a=0,1,2,3,5;等价于:int a5=0,1,2,3,5;,(4)初值的个数不能超过数组总元素的个数。int a3=1,2,3,4;语法错!,说明:,(3)对数组中间元素赋值必须指明位置。int a5=,2,3,4;/*对第3-5个元素赋初值*/,共 52 页 第 13 页,数组元素在程序中赋
7、值,利用输入函数main()char as26;int i;for(i=0;i26;i+)scanf(%c,.,利用赋值语句main()char as26,ch;for(ch=A;ch=Z;ch+)asch-A=ch;.,共 52 页 第 14 页,6.2.3 一维数组应用举例,例1 从键盘上输入10个实型数存入数组,然 后按输入顺序的逆序输出这10个数。,main()float a10;int i;for(i=0;i=0;i-)printf(“%10.2f”,ai);,数组的引用离不开循环。将数组的下标作为循环变量,通过循环,就可以对数组的所有元素逐个进行处理。,共 52 页 第 15 页,
8、例2 从键盘上输入10个数,求出其中最大值并输出。,#include stdio.h main()int a10,i,max;for(i=0;imax)max=ai;printf(max=%dn,max);,算法分析:采用打擂台的方法,先把10个数存在数组中,任意指定某数为擂主,然后擂主依次与其他数比较,若某数大于擂主,则该数为擂主。循环结束,擂主变量中一定是最大的数。,共 52 页 第 16 页,例3从键盘上输入6个数存入数组中,再按输入顺序的逆序存放在该数组中并输出。,main()int a6,i,j,k,t;for(i=0;i6;i+)scanf(%d,算法分析:采用循环设计。逆序操作可
9、总结为:ai与aj进行交换,其中i=0,1,n/2-1,j=n-i-1,程序运行演示,共 52 页 第 17 页,例4 用冒泡法对数据进行由小到大排序。方法:将两个相邻数比较,小的调到前头。采用两重循环。9 8 8 8 8 8 5 5 5 5 4 4 4 2 2 0 8 9 5 5 5 5 8 4 4 4 5 2 2 4 0 25 5 9 4 4 4 4 8 2 2 2 5 0 0 4 4 4 4 4 9 2 2 2 2 8 0 0 0 5 5 5 52 2 2 2 9 0 0 0 0 8 8 8 8 8 8 80 0 0 0 0 9 9 9 9 9 9 9 9 9 9 9,由以上可推知:6
10、个数要比较5趟 第一趟中要进行两两比较5次 第二趟中比较 4次 若 有n个数,则要进行n-1趟比较 第 i趟比较中要进行n-i次两两比较。,共 52 页 第 18 页,#include stdio.h#define N 6 main()int aN,i,j,t;for(i=0;iaj)t=aj-1;aj-1=aj;aj=t;printf(The sorted numbers:n);for(i=0;iN;i+)printf(%d,ai);,n个数比较n-1趟,第i趟比较n-i次,程序运行演示,共 52 页 第 19 页,冒泡排序的缺陷:在比较交换的过程中大的数不能一次到位,效率低。,例6 选择法
11、排序。,选择排序法的基本思想:以冒泡排序法为基础,在两两比较后并不马上进行交换,而是在找到最小的数之后,记住最小数的位置(数组中的下标),待一轮比较完毕后,再将最小的数一次交换到位。,共 52 页 第 20 页,3 6 1 9 41 6 3 9 41 3 6 9 41 3 4 9 61 3 4 6 9,选择法排序.,问题 将 3、6、1、9、4 从小到大排列。,共 52 页 第 21 页,选择排序算法 若有N个数,则需要进行N-1轮排序处理。第1轮排序从1N个数中找出最小的数,然后将它与第1个数交换。第1个数则是最小的数。第2轮排序从2N个数中找出最小的数,然后将它与第2个数交换。第2个数则是
12、次小的数。经过 N-1 轮处理,完成全部N个数排序。编程时使用二重循环。外面的大循环控制进行N-1轮排序,内循环找出第 i 轮的最小值。,共 52 页 第 22 页,#include stdio.h#define N 5main()int aN,i,j,k,t;printf(Input numbers:n);for(i=0;iaj)k=j;if(k!=i)t=ai;ai=ak;ak=t;printf(The sorted numbers:n);for(i=0;iN;i+)printf(%d,ai);,程序运行演示,共 52 页 第 23 页,例如 int a33,6.3 二维数组6.3.1 二
13、维数组的定义,第一个下标可能取值的个数,第二个下标可能取值的个数,共 52 页 第 24 页,说明:,二维数组除了维数比一维数组多一维外,其它性质与一维数组全部类似。,下面写法是否正确?,int a03;,用于定义数组长度的常量表达式的值必须是大于0的正整数。,int i=3,j=4;int aij;,定义数组元素的个数必须使用常量表达式,而不能使用变量。,共 52 页 第 25 页,6.3.2 二维数组的引用 二维数组的引用与引用一维数组元素一样,也用下标法引用二维数组元素。二维数组元素表示形式:数组名下标1下标2 下标1和下标2是整型常量、整型变量或整型表达式。其编号是从0开始的。,例如:
14、若有 int a2*53*4,i=15;则使用 a3*30,a1i-5都是合法的。,说明:数组名a代表的是数组a在内存中的首地址,因此,可以用数组名a来代表数组元 素a00的地址。数组名是常量,不可对它赋值。,下标不要越界,共 52 页 第 26 页,一、二维数组的初始化1.分行给二维数组赋初值。如:int a23=2,3,1,1,2,3;,2.将所有数据写在一个 内,按顺序赋值。即按数组元素在内存中排列的顺序赋初值。int a23=2,3,1,1,2,3;,6.3.3 二维数组的初始化和输入输出,共 52 页 第 27 页,3.对部分元素赋值如:int a33=1,0,1,0,0,1;相当矩
15、阵:,4.如果对数组全部元素赋初值,第一个下标可省略,但第二个下标不可省略。如:a34=0,1,3,1,2,1,0,2,1,1,2,0;可写成 a 4=0,1,3,1,2,1,0,2,1,1,2,0;,int a33=1,0,0,1;相当矩阵:,共 52 页 第 28 页,1.二维数组的输入 int a23,i,j;for(i=0;i2;i+)for(j=0;j3;j+)scanf(“%d”,2.二维数组的输出 int a23,i,j;for(i=0;i2;i+)for(j=0;j3;j+)printf(“%5d”,aij);,二、二维数组的输入、输出,共 52 页 第 29 页,6.3.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言课件 第六章 语言 课件 第六
链接地址:https://www.31ppt.com/p-5383319.html