清华大学c语言 谭浩强 第4章 ppt课件

上传人:bin****86 文档编号:57542662 上传时间:2018-10-22 格式:PPT 页数:74 大小:809KB
返回 下载 相关 举报
清华大学c语言 谭浩强 第4章 ppt课件_第1页
第1页 / 共74页
清华大学c语言 谭浩强 第4章 ppt课件_第2页
第2页 / 共74页
清华大学c语言 谭浩强 第4章 ppt课件_第3页
第3页 / 共74页
清华大学c语言 谭浩强 第4章 ppt课件_第4页
第4页 / 共74页
清华大学c语言 谭浩强 第4章 ppt课件_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《清华大学c语言 谭浩强 第4章 ppt课件》由会员分享,可在线阅读,更多相关《清华大学c语言 谭浩强 第4章 ppt课件(74页珍藏版)》请在金锄头文库上搜索。

1、第4章数组和字符串,第4章 数组和字符串,4.1 数组的概念 4.2 一维数组 4.3 二维数组 4.4 字符串与字符函数,4.1 数组的概念,1.数组的定义 2.数组的数据类型 3.数组的维数,1.数组的定义,按序排列的同类数据元素的集合就称为数组。 在C语言中,一个数组可以分解为多个数组元素。 按数组元素类型的不同,数组又可分为数值型数组、字符型数组、指针型数组、结构体型数组等各种类别。,2.数组的数据类型,数组的数据类型可以是各种基本数据类型,如int、float、double、char、long等 。还可以指针型、结构体型、共用体型、枚举型(后续章节将介绍)等。 C语言规定,同一数组中

2、的所有元素必须是相同类型的,不允许同一个数组中包含不同的数据类型。,3.数组的维数,一维数组的元素有一个下标、二维数组的元素有两个下标、三维数组有三个下标。 C语言的数组可以是多维的,但一般常用的是一维数组和二维数组。,4.2一维数组,4.2.1一维数组的定义 4.2.2一维数组的初始化 4.2.3一维数组的引用,4.2.1一维数组的定义,一维数组定义的语法格式如下: 类型说明符 数组名 数组长度; 其中: (1)“类型说明符”可以是任何一种基本数据类型或构造数据类型。例如: int m8; /*定义一个整型数组m,有8个元素*/ char c20; /*定义一个字符数组c,有20个元素*/

3、(2)“数组名”是用户定义的数组标识符。其命名规则和变量命名规则相同。,(3)数组名后的“数组长度”表示数组中数据元素的个数,通常是一个整型常量、整型变量或整型表达式。例如在m8中,表示数组m有8个元素,下标从0开始一直到7,这8个数组元素分别是: m0、m1、m2、m3、m4、m5、m6、m7, 注意没有m8。 (4)一个数组定义语句中可以只定义一个数组,也可以定义多个数组,还可以同时定义数组和变量。例如: double a10,b1; /*定义了一个有10个元素的双精度型数组a和一个双精度型变量b1*/ 又例如: char f8,e1; /*定义了一个有8个元素的字符型数组f和一个字符型变

4、量e1*/,4.2.2一维数组的初始化,在定义数组的同时给数组元素赋予初值称为数组的初始化。 初始化赋值的一般形式为: 类型说明符 数组名常量表达式=数据值1, 数据值2,数据值n; 其中在 中的各数据值即为各元素的初值,各值之间用逗号间隔。 语言对数组的初始化赋值还有以下几点规定: (1)可以只给部分元素赋初值。没有赋初值的元素:对于数值型数组,自动赋初值为0;对字符型数组,自动赋初值为空字符。 例如:,int m10=1,2,3,4; 定义的数组m有10个元素,但大括号内只有4个初值,这表示只给前面4个元素赋初值,后6个元素值均为0。 (2)只能给元素逐个赋值,不能给数组整体赋值。 例如:

5、给数组m中的10个元素全部赋值“2”只能用以下形式来表示: int m10=2,2,2,2,2,2,2,2,2,2; 而不能为了方便写成如下的形式: int a10=2; (3)如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。其长度等于初值表中数组元素的个数。例如: int m5=1,2,3,4,5; 可写为: int m =1,2,3,4,5;,4.2.3一维数组的引用,数组元素引用的一般形式为: 数组名下标表达式 C语言规定只能逐个引用数组中的元素,而不能一次引用整个数组。,1.引用说明,(1)下标表达式必须放在方括号内,且只能取整型值。下标的下限是0,而上限不能超过该数组定

6、义时的长度值减1(即:数组长度-1)。 (2)数组中的下标只能为整型常量或整型表达式。 (3)在语言中只能单独地使用数组元素,而不能一次引用整个数组。 (4)任何一个数组元素的引用都可以看成是一个变量的使用。,例4.1数组元素的赋值及引用举例。 #include main() int i,m8;for(i=0;i=0;i-)printf(“%d “,mi); ,程序的运行结果如下: 7 6 5 4 3 2 1 0,语言允许用表达式表示下标。 例4.2数组元素用表达式表示下标应用举例。 #include main() int i,m8;for(i=0;i8;)mi+=2*i+2;for(i=0;

7、i=7;i+)printf(“%d “,mi);,程序的最后运行结果如下: 2 4 6 8 10 12 14 16,2.一维数组举例,例4.3用“选择排序法”对一维数组中的整数进行排序,使其数组元素的值按从小到大的顺序排列。 分析:选择排序法是一种简单而且常用的对数据排序的方法,其排序原理为:设有m个数要求从小到大排列,选择排序法排序过程分为m-1个步骤: 第1步、在m个数中找出最小数,然后和第一个数交换,前1个数已经排好序。 第2步、在m-1个数中找出最小数,然后和第2个数交换,前2个数已经排好序。 第k步、在m-k+1个数中找出最小数,然后和第k个数交换,前k个数已经排好序。 这样一值到第

8、m-1步结束。,#include main() int n,i,m,x,min,min_m,a100;printf(“Please input the value of n:“);scanf(“%d”, /* 交换最小数和第m个数的位置 */,amin_m=am;am=x;for(i=0;in;i+)printf(“%d “,ai);printf(“n“); ,程序的运行结果如下: Please input the value of n:6 please input your number: 5 34 56 2 78 40 2 34 40 56 78,4.3 二维数组,4.3.1 二维数组的定

9、义 4.3.2 二维数组的初始化 4.3.3 二维数组的引用,4.3.1二维数组的定义,1. 二维数组定义的一般形式 2. 对二维数组的说明 3. 多维数组的扩展,1.二维数组定义的一般形式,二维数组定义的一般形式为: 类型说明符 数组名行数列数 其中“行数”表示第一维下标的长度,“列数”则表示第二维下标的长度。,例如: int m45;/*定义了一个数组名为m的二维数组,其中行数为4、列数为5*/ 该数组的数组元素共有45=20个,分别为: m00,m01,m02,m03,m04 m10,m11,m12,m13,m13 m20,m21,m22,m23,m23 m30,m31,m32,m33,

10、m34,2.对二维数组的说明,(1)二维数组在概念上是二维的,也就是说其下标在两个方向上变化。 (2)在语言中,二维数组是按行排列的。 (3)数组元素所占的存储位置跟其类型有关系。 (4)一个二维数组可以看成为若干个一维数组。 注意:二维数组中m23中的m0和m1不能当作数组元素使用,因为它们是一维数组名,不是一个单纯的数组元素。,3.多维数组的扩展,多维数组可以由二维数组扩展而得到,例如: int m234; 定义了一个数组名为m的三维数组,按顺序进行展开后的各个元素值分别如下: m000,m001,m002,m003 m010,m011,m012,m013 m020,m021,m022,m

11、023 m100,m101,m102,m103 m110,m111,m112,m113 m120,m121,m122,m123,4.3.2二维数组的初始化,1. 二维数组初始化的一般形式 2. 对二维数组初始化的说明,1.二维数组初始化的一般形式,二维数组初始化的一般形式为: 数据类型说明符 数组名行数列数=数据值,数据值,数据值,数据值,数据值,数据值; 或者 数据类型说明符 数组名行数列数=数据值,数据值,数据值;,2.对二维数组初始化的说明,(1)二维数组初始化和一维数组初始化的方法基本相同,也是在类型说明时给各个数组元素赋以初值。稍微有所区别的是:二维数组可按行分段赋值,也可以不分行连

12、续赋值。 例如对数组m43:按行分段赋值可写为: int m43= 78,65,80,67,89,65,53,68,98,57,88,67 ; 其中,78,65,80是赋给第一行3个数组元素的,这里可以看成是赋给一维数组m0的;67,89,65是赋给第二行3个数组元素的,这里可以看成是赋给一维数组m1的;其他依次类推。,不分行连续赋值可写为: int m43= 78,65,80,67,89,65,53, 68,98,57,88,67 ; 各元素获得的初值和第1种方式的结果完全相同。C语言规定,用这种方式给二维数组赋初值时,是先按行、后按列的顺序进行的。 (2)可以只对部分元素赋初值,未赋初值的

13、元素自动取0值。例如: int m34=1,2,3; 是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值依次为: 1 0 0 0 2 0 0 0 3 0 0 0,(3)如果对全部元素赋初值,则第一维的长度可以省略。例如: int m33=1,2,3,4,5,6,7,8,9; 可以写为: int m3=1,2,3,4,5,6,7,8,9; 表示数组m3的第一维长度是3。 需要注意的是:使用这种方法赋初值,必须给出所有数组元素的初值,如果初值的个数不正确,则系统将作出错处理。,例4.4从键盘上输入一个34的矩阵,将其转换后形成43矩阵输出。 分析:矩阵的转置是将矩阵的行和列进行互换,

14、使其行成为列,列成为行,例如: 原矩阵为:,转置后的矩阵为:,#include main() int m34,n43,i,j;printf(“Please enter the number of m34:n“);for(i=0;i3;i+) /* 输入一个34的矩阵存放在数组m中 */for(j=0;j4;j+) scanf(“%d“, ,程序的运行情况为: Please enter the number of m34: 1 1 1 1 2 2 2 2 3 3 3 3 The number of n43 is: 1 2 3 1 2 3 1 2 3 1 2 3,4.3.3二维数组的引用,二维数组元素的引用形式为: 数组名下标表达式1下标表达式2 其中,下标表达式1表示行下标,下标表达式2表示列下标,二者必须分别放在两个方括号内。 关于下标表达式类型的限制及下标越界的处理与一维数组相同。 例如: int a23; a01=a; 其中的“a01=a;”就是对二维数组“a23”中一个元素的引用。,例4.5 求矩阵m34各个元素中的最小值,并输出最小值元素所在的行和列。 #include main() int i,j;int x,y;int m34=12,1,2,4,2,3,4,5,5,6,7,8;int min=m00;for(i=0;imij) min=mij;,

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

当前位置:首页 > 医学/心理学 > 基础医学

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