第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套

上传人:飞*** 文档编号:47830807 上传时间:2018-07-05 格式:PPT 页数:32 大小:258KB
返回 下载 相关 举报
第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套_第1页
第1页 / 共32页
第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套_第2页
第2页 / 共32页
第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套_第3页
第3页 / 共32页
第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套_第4页
第4页 / 共32页
第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套》由会员分享,可在线阅读,更多相关《第05章:数组,C语言程序设计课件,与中南大学出版社教材相配套(32页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计第5章 数组 5.1 一维数组 5.2 二维数组与多维数组 5.3 字符与数组什么是数组? 数组:数组是一组有序数据的集合,数组中每一 个元素的类型相同。用数组名和下标来唯一确定 数组中的元素。 5.1一维数组 5.1.1一维数组的声明 5.1.2一维数组元素的引用 5.1.3一维数组的赋值 5.1.4一维数组越界检查 5.1.5一维数组的应用举例5.1.1一维数组的声明定义方式: 类型说明符 数组名下标常量表达式 例、 int a10 定义一个数组,数组名a,有10个元素,每个元素的类型均为int 。 这10个元素分别是:a0、a1、a2、a3、a4、.、a8、 a9。 注意:

2、 (1)C语言中,数组下标从0开始. (2)C语言不允许对数组的大小做动态定义,如:int n; scanf(“%d“, int an; 因为,在编译时,C编译器根据已知数组大小分配内存。 例5.1源程序5.1.2 一维数组元素的引用 C语言规定,不能引用整个数组,只能逐个引用 元素,元素引用方式:数组名下标 例、a0 = a5 + a7 - a2*35.1.2一维数组元素的引用使数组元素a0a9的值为09,然后逆序输出。main () int i,a10; for (i=0;i=0; i-) printf(“%d ”,ai); 运行输出: 9 8 7 6 5 4 3 2 1 0 5.1.3

3、一维数组的赋值 初始化:在定义时指定初始值,编译器把初值赋 给数组变量。 赋值:使用赋值语句,在程序运行时把值赋给数 组变量,如a0 = 2。 1、一般初始化,例、static int a10 = 0,1,2,3,4,5,6,7,8,9; int array10 = 1,2,3,4,5,6,7,8,9,10; 2、部分元素初始化,例、static int a10 = 0,1,2,3,4; 仅前5个元素赋初值,后5个元素未指顶初值。 3、全部元素均初始化为0,不允许简写。static int a10 = 0,0,0,0,0,0,0,0,0,0; 不能简写为: static int a10 = 0

4、*10;5.1.3 一维数组的赋值 注意:当程序不给数组指定初始值时,编译器作如下处理 :(1)编译器自动把静态数组的各元素初始化为0。 (2)编译器不为动态数组自动指定初始值。 4、如果全部元素均指定初值,定义中可以省略元素的个 数,例、static int a5 = 1,2,3,4,5; 可以写为: static int a = 1,2,3,4,5; 例5.2 求10个元素的最大值5.1.4一维数组越界检查 C语言并不检验数组边界 在程序中最好还是加上数组越界检查程序代码5.1.5 一维数组程序举例用数组来处理Fibonicci数列的前20项。F1 = 1 n = 1 F2 = 1 n =

5、 2 Fn = Fn-1 + Fn-2 n 3 程序:main () int i; static int f20 = 1,1; /* f1、f2已知 */ for(i=2; i20; i+) fi = fi-1 + fi-2; for(i=0; i20; i+) if (i%5 = 0) printf(“n“); printf(“%12d“,fi); 例5.3源程序5.1.5 一维数组程序举例 例5.4 输入10个数,用“冒泡法”对10个数排序( 由小到大)。 “冒泡法”算法:以六个数9、8、5、4、2、0为例 。第1趟比较(图5-1) 第2趟比较(图5-2) 第1趟比较后,剩5个数未排好序;

6、 两两比较5次 第2趟比较后,剩4个数未排好序; 两两比较4次 第3趟比较后,剩3个数未排好序; 两两比较3次 第4趟比较后,剩2个数未排好序; 两两比较2次 第5趟比较后,全部排好序; 两两比较1次 算法结论:对于n个数的排序,需进行n-1趟比较 ,第j趟比较需进行n-j次两两比较。5.1.5 一维数组程序举例 图5-1 图5-25.1.5 一维数组程序举例 程序流程图:(用两层嵌套循环实现 例程5.4 例程5.5输入若干个0-9之间的数,统计各整数的个 数5.2 二维数组与多维数组5.2.1二维数组的声明与初始化 5.2.2二维数组的表示方法 5.2.3多维数组 5.2.4二维数组的应用举

7、例5.2.1二维数组的声明与初始化 一般形式: 类型说明符 数组名常量表达式常量表达式 例、float a34; a为34(3行4列)的数组 float b510; b为510(5行10列)的数组 5.2.1二维数组的声明与初始化 二维数组的理解: 二维数组a34理解为: 二维数组的元素在内存中的存放顺序:按行存放,即:先顺序存放第一行的元素,再存放第二行的元素。 (最右边的下标变化最快,第一维的下标变化最慢)。 5.2.1二维数组的声明与初始化 1、分行赋值,如、static int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 2、全部数据写在一个大括号内,如、sta

8、tic int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 3、部分元素赋值,如、static int a34 = 1,5,9;仅对a00、a10、a20赋值,其余元素未赋值(对 于静态数组,编译器自动为未赋值元素指定初值0;对于 动态数组,未赋值元素的初值是随机的)。 4、如果对全部元素赋初值,则第一维的长度可以不指定 ,但必须指定第二维的长度。例、static int a34=1,2,3,4,5,6,7,8,9,10,11,12; 与下面定义等价: static int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 5.2.2二维数组元素的表示方法

9、 用数组名和下标引用元素。例、float a23; 有6个元素,按如下方式引用各元素 :a00、a01、a02、a10、a11、 a12 注意:数组float a23中无元素a23。(下标 从0始) 例5.6源程序 例5.7源程序5.2.3多维数组 在学习了一维数组和二维数组之后,不难发现:提高数组的维数,只需要在声明数组的时候将下标和方括 号”再加一组就可以了. 三维数组:float a234在内存中的存放顺序:a000a001a002a003 a010a011a012a013 a020a021a022a023 a100a101a102a103 a110a111a112a113 a120a1

10、21a122a123 例5.8源程序5.2.4二维数组的应用举例 例5-9将一个二维数组的行和列互换,存放到另一个二维 数组中. 例5-10编写程序,打印出所给形式的杨辉三角. 例5.11源程序 例5.12源程序5.3字符与数组 5.3.1字符型数据 5.3.2一维字符数组的声明及初始化 5.3.3一维字符数组的输入与输出 5.3.4二维字符数组 5.3.5字符串处理函数 5.3.6字符数组程序举例5.3.1字符型数据 字符型数据包括字符常量、转义字符常量、字符串常量 、字符变量和符号常量。 字符常量:由单引号括起的单个字符。如:a,A,G ,?。 转义字符常量:以反斜杆开头的特殊字符序列。意

11、思是 把反斜杆后面的字符序列转换成特定的含义,而不是原来 的含义。例如:n表示换行,而不是小写字母n。r表示回车; b表示退格;表示等等。 字符串常量:用双引号括起来的字符序列。例如, “China“,“12234“等。字符串常量的长度没有限制,系统 在字符串的末尾自动加上0 ,以示字符串的结束。 字符变量:存放字符常量的内存变量。字符变量用关键字 char来说明。可以在定义字符变量的同时进行初始化。 符号常量:以指定的符号代表其后的“一串字符“。用于简 化程序的编写和修改。 5.3.2一维字符数组的声明及初始化字符数组:存放字符数据的数组,每一个元素存放一个字符。 char c10; /*

12、定义 c为字符数组,包含10个元素 */ c0=I; c1= ; c2=a; c3=m; c4= ; c5=h; c6=a; c7=p; c8=p; c9=y; 5.3.2一维字符数组的声明及初始化 1.逐个元素初始化static char c10 = I, ,a,m, ,h,a,p,p,y; 2.初始化数据少于数组长度,多余元素自动为“空”(0,二 进制0)。 3.指定初值时,若未指定数组长度,则长度等于初值个数 。static char c = I, ,a,m, ,h,a,p,p,y; 5.3.2一维字符数组的声明及初始化 字符数组的引用 引用一个元素,得到一个字符。 例 输出一个字符串。

13、main () static char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(“%c“,ci); printf(“n“); 输出结果: I am a boy 5.3.3一维字符数组的输入与输出1、用“%c”格式符逐个输入输出。 2、用“%s”格式符按字符串输入输出。例、static char c6; scanf(“%s“,c); printf(“%s“,c); 注意: (1)输出时,遇0结束,且输出字符中不包含0。 (2)“%s”格式输出字符串时,printf()函数的输出项是字符数组名,而不是元素 名。static ch

14、ar c6 = “China“; printf(“%s“,c); printf(“%c“,c0); printf(“%s“,c0); (3)“%s”格式输出时,即使数组长度大于字符串长度,遇0也结束。例、static char c10 = “China“; printf(“%s“,c); /*只输出5个字符 */ (4) “%s”格式输出时,若数组中包含一个以上0,遇第一个0时结束。 (5)输入时,遇回车键结束,但获得的字符中不包含回车键本身(0x0D,0x0A ),而是在字符串末尾添0。因此,定义的字符数组必须有足够的长度,以 容纳所输入的字符。(如,输入5个字符,定义的字符数组至少应有6个元素 )。5.3.3一维字符数组的输入与输出(6)一个scanf

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 其它考试类文档

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