C语言程序设计 教学课件 ppt 作者 郑山红 李万龙 宋立明 侯秀萍 第4章 数组

上传人:E**** 文档编号:89370383 上传时间:2019-05-24 格式:PPT 页数:57 大小:1.60MB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者  郑山红 李万龙 宋立明 侯秀萍 第4章 数组_第1页
第1页 / 共57页
C语言程序设计 教学课件 ppt 作者  郑山红 李万龙 宋立明 侯秀萍 第4章 数组_第2页
第2页 / 共57页
C语言程序设计 教学课件 ppt 作者  郑山红 李万龙 宋立明 侯秀萍 第4章 数组_第3页
第3页 / 共57页
C语言程序设计 教学课件 ppt 作者  郑山红 李万龙 宋立明 侯秀萍 第4章 数组_第4页
第4页 / 共57页
C语言程序设计 教学课件 ppt 作者  郑山红 李万龙 宋立明 侯秀萍 第4章 数组_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 郑山红 李万龙 宋立明 侯秀萍 第4章 数组》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 郑山红 李万龙 宋立明 侯秀萍 第4章 数组(57页珍藏版)》请在金锄头文库上搜索。

1、第4章 数组,第4章 数组,本章目标 了解数组的基本概念和分类 掌握数组的定义、初始化和引用方法 熟练掌握一维数组、二维数组和字符数组的使用方法 会应用数组编写程序,回 顾,之前学过的数据类型: 基本数据类型: 1、整型 2、实型 3、字符型 存储特点:每个变量单独存储, 各变量的存储地 址不一定是连续的,无任何联系。 例:int a1,a2,a3;,计算机处理程序时经常会出现数据是用某种有序 的形式进行组织的情况,例如: 按学号排列的成绩表 ; 线性方程组的nm系数矩阵 ;,这些数据具有共同的特征:,1、都是由若干个分量组成,2、数据的诸分量都是同一类型(可取任何数据类型),3、这些分量是按

2、一定顺序排列的,要解决此类问题关键: 要定义一个按序排列的具有相同类型的变量的集合。,数 组,回 顾,4.1 概述,概 念 数 组:类型相同、数目固定的若干个变量的有 限集合。 数组元素:组成数组的基本单元,具有相同的数据 类型,是一种变量。 分 类 按数组元素的类型:整型数组、实型数组、字符数组、指针数组等。 按下标的个数:一维数组、二维数组、多维数组。,4.2 一维数组,一维数组的定义 一维数组的初始化 一维数组的引用 一维数组程序举例,1、一维数组的定义,一维数组定义的一般形式: 类型说明符 数组名 常量表达式 例如. int a10 定义了一个数组,数组名为a数据 类型为int型,数组

3、长度 为10。 数组元素分别为:a0 a1 a2 a3 a4 a5 a6 a7 a8 a9,数据类型,数组名,数组长度,4.2 一维数组,注意: 同一数组中,数据元素的类型是相同的。 数组名不能与其它变量名相同。 例:int a; float a10; 是不合法的 常量表达式表示数组的个数,也称数组的长度。 常量表达式中可以包括常量和符号常量,不能包含变量。也就是说c语言不允许对数组的大小做动态定义。 例:int n=5; int an; 是不合法的,4.2 一维数组,一维数组的存储 在c语言中规定,数组名代表该数组的首地址。 整个数组存放在以首地址开头的一块连续的内存单元 中。 例: 内存总

4、字节数=sizeof(类型) 数组长度,4.2 一维数组,2、一维数组的初始化,一维数组初始化的一般形式: 类型说明符 数组名常量表达式=值1,值2,值n; 实现方法 全部初始化 int a10=0,1,2,3,4,5,6,7,8,9; 相当于a0=0;a1=1; ;a9=9。 部分初始化 int a10=0,1,2,3,4; 一维数组中全部元素的值为0(只有都为零才可以这样赋值) int a10=0;,4.2 一维数组,注意 数组元素需逐个赋值,不能给数组整体赋值。 int a3=1,1,1; 不能写成int a3=1 对全部元素赋初值时,可以不指定数组长度。 int a5=1,2,3,4,

5、5; 可以写成 int a =1,2,3,4,5 如果初值的类型与数组元素类型不一致,则把初值的类型转换为数组元素的类型。 如果提供的初值个数大于数组的长度,系统 编译时会出现错误。 int a3=1,2,3,4,5 是错误的,4.2 一维数组,3、一维数组的引用,一维数组引用的一般形式: 数组名下标 下标表示数组内的某一元素在数组中的顺序号, 其合理取值范围是0,数组长度-1。 注意下标的最大取值 即:要注意数组定义和数组元素引用的区别 例:定义:int a4;引用时,下标的下限值 是a0下标的上限值是a3,可以是整型常量、整型变量、整型表达式,4.2 一维数组,注意 对数组引用时不检查下标

6、是否越界,因此编程时不要让下标越界。 例:int a3; a3 =a1+4; 只能逐个引用数组元素,不能一次引用整个数组。 例:int a10; printf(“d%”,a); 引用是错误的,a3越界,4.2 一维数组,例 :,数组元素的下标常用循环变量来控制,4.2 一维数组,【例4-1】 从键盘输入10个数,分别按正序和逆序将其输出。 #include int main( ) int a10, i; printf(”Input 10 numbers:n”); for(i = 0; i = 0; i-) printf(”%2d”, ai); return 0;,运行结果如下: Input 1

7、0 numbers: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0,,,4.2 一维数组,【例4-2】 从键盘输入10个数,分别输出最大值和最小值。,算法描述: 定义一个数组a10和两个变量iMax和iMin。 输入10个数组元素,iMax =a0,iMin =a0。 当1 iMax,那么iMax=ai。 如果ai iMin,那么iMin=ai。 输出iMax和iMin的值。,4.2 一维数组,【例4-2】 从键盘输入10个数,分别输出最大值和最小值。,#include int main( ) int a10, i, i

8、Max, iMin; printf(”Input 10 numbers:n”); for(i = 0; i iMax) iMax = ai; if(ai iMin) iMin = ai; printf(”maximum = %d,minimum = %dn”, iMax, iMin); return 0;,运行结果如下: Input 10 numbers: 1 0 4 8 12 65 -76 100 -45 123 maximum = 123,minimum = -76,4.2 一维数组,【例4-3】 对10个数排序,排序方式为升序。,算法描述: 1)定义一个数组a11。 2)输入10个数组元

9、素。 3)当1 ai+1,那么ai 与ai+1交 换。 6)输出数组a。,4.2 一维数组,【例4-3】 对10个数排序,排序方式为升序。,#include int main( ) int a11; int i, j, t; printf(”Input 10 numbers:n”); for(i = 1; i ai+1) t = ai; ai = ai+1; ai+1 = t; printf(”The sorted numbers:n”); for(i = 1; i = 10; i+) printf(”%5d”, ai); return 0;,运行结果如下: Input 10 numbers:

10、 12 39 8 -46 264 25 0 -77 58 87 The sorted numbers: -77 -46 0 8 12 25 39 58 87 264,4.2 一维数组,4.3 二维数组,二维数组的定义 二维数组的初始化 二维数组的引用 二维数组程序举例,1、二维数组的定义,二维数组定义的一般形式: 类型说明符 数组名 常量表达式1 常量表达式2; 例:int a34数组元素的个数=34 概念上可理解二维数组a34是一个3行4列的矩阵 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,行数,列数,数组元素还是数组就构成二维数组,4.3

11、 二维数组,二维数组的存储 1.二维数组从概念上可理解为行-列 矩阵,但存储器是一维的,需按 一定规则转换。 2.在内存中,二维数组中元素的排 列顺序是按行存储 3.也就是说数组元素的实际存放顺 序是: 右边下标比左边下标变的快 内存总字节数 = sizeof(类型) 行数 列数,4.3 二维数组,实现方法 全部初始化 int a33=1,2,3,4,5,6,7,8,9;(按存放顺序) int a33=1,2,3,4,5,6,7,8,9; 部分初始化 int a33=1,4,7; int a33=1,0,0,4,0,0,7,0,0;,4.3 二维数组,注意 全部初始化时,第一维的长度可以不给出

12、,但第二维的长度不能省。 int a 3=1,2,3,4,5,6,7,8,9; 一个二维数组可以分解为多个一维数组。 a34可以分解为三个一维数组,其 数组名分别为: a0、a1、a2,二维数组a34的组成,4.3 二维数组,3、二维数组的引用,一维数组引用的一般形式: 数组名行下标列下标 行下标的合理取值范围是0,行数-1 列下标的合理取值范围是0,列数-1,可以是整型常量、整型变量、整型表达式,4.3 二维数组,二维数组的 处理用二重循环来控制 用循环变量的值来控制数组元素的下标,思考题: 1、输出次对角元素 2、输出上三角的各元素,4.3 二维数组,4、二维数组程序举例,例:有一个34的

13、矩阵 , 求出该矩阵中最大元素的值以及其所在的行号和列号。,4.3 二维数组,#include void main( ) int i, j, row , col , max; int a34 = 1,2,3,4,9,8,7,6,-10,10,-5,2; max = a00;row=0;col=0; for(i = 0; i max) max = aij; row = i; col = j; printf(”max = %d,row = %d,col = %dn”, max, row, col); ,运行结果如下: max = 10,row = 2,column = 1,4.3 二维数组,例:

14、用二维数组保存4个学习小组的数学成绩 (每个学习小组5人),并求每个学习小组 的平均成绩。,4.3 二维数组,#include void main( ) int i, j; float score45, sum4 = 0,0,0, average4; for(i = 0; i 4; i+) printf(”Input students scores in Group %d:n”, i+1); for(j = 0; j 5; j+) scanf(”%f”, ,4.3 二维数组,4.4 多维数组,多维数组定义的一般形式: 类型说明符 数组名 常量表达式1 常量表达式2 常量表达式n ; 例:int

15、 a234;,三维数组a包含2个二维数组(a0和a1),每个二维数组包含3个一维数组,而每个一维数组包含4个int型的数组元素(如a00包含a000、a001、a002和a003),例: 某年级共有3个班,每个班各有5名学生,有2个科目 的考试 成绩。求各班每个学生的平均成绩并输出。,4.4 多维数组,#include void main( ) int i, j, k; int score352, sum=0; float aver35; for(i = 0; i 3; i+) for(j = 0; j 5; j+),for(k = 0; k 2; k+) scanf(”%d”, ,4.4 多维数组,4.5 字符数组,字符数组的定义和引用 字符

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

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

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