C语言程序设计(谭浩强编)第七章数组培训课件

上传人:日度 文档编号:149740308 上传时间:2020-10-29 格式:PPT 页数:42 大小:463.50KB
返回 下载 相关 举报
C语言程序设计(谭浩强编)第七章数组培训课件_第1页
第1页 / 共42页
C语言程序设计(谭浩强编)第七章数组培训课件_第2页
第2页 / 共42页
C语言程序设计(谭浩强编)第七章数组培训课件_第3页
第3页 / 共42页
C语言程序设计(谭浩强编)第七章数组培训课件_第4页
第4页 / 共42页
C语言程序设计(谭浩强编)第七章数组培训课件_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《C语言程序设计(谭浩强编)第七章数组培训课件》由会员分享,可在线阅读,更多相关《C语言程序设计(谭浩强编)第七章数组培训课件(42页珍藏版)》请在金锄头文库上搜索。

1、1,第七章 数 组,在本章节前给大家讲的都是基本类型的数据,c语言还提供 了构造类型的数据(数组类型、结构体类型、共用体类型)。 数组是有序数据的集合,数组中的每个元素都属于同一个 数据类型。 7.1 一位数组的定义和引用 7.1.1一维数组的定义 定义方式: 类型说明符 数组名 常量表达式; 例:int a10; 它表示数组名为a,此数组有10个元素。,2,说明: (1)数组名定义规则和变量名相同; (2)数组名的常量表达式用方括弧括起来 (3)常量表达式表示元素的个数,即数组长度。 例如:a10表示a数组共有10个元素,下标从0开始分别为: a0,a1,a2,a3,a4,a5,a6,a7,

2、a8,a9 注意:没有a10。 (4)常量表达式中可以包括常量和符号常量,即数组的大小不能依赖于程序过程中变量的值。 例如:int n; scanf(“%d”, 是不合法的。,c语言中是先扫描全篇分配空间,因此先int an后scanf(.)。,3,7.1.2 一维数组元素的引用 C语言规定,只能逐个引用数组元素而不能一次引用整个数组。 数组元素的表示形式为: 数组名下标 其中下标可以是整型常量或整型表达式。例如: a0=a5+a7-a2*3 例7.1 数组元素的引用 #main ( ) int i,a10; for(i=0;i=0;i- -) printf(“%d”,ai); ,4,7.1.

3、3 一维数组的初始化,(1)在定义数组时对数组元素赋以初值。 例如:int a10= 0,1,2,3,4,5,6,7,8,9 其中:a0=0, a1=1, a2=2, a3=3, a4=4, a5=5, a6=6, a7=7, a8=8, a9=9 (2)可以只给一部分元素赋值。 例如:int a10=0,1,2,3,4; 其中:a0=0, a1=1, a2=2, a3=3, a4=4, a5=0, a6=0, a7=0, a8=0, a9=0 (3)如果想使一个数组中全部元素值为0,可以写成: int a10=0, 0, 0, 0, 0, 0, 0, 0, 0, 0 不能写成: int a1

4、0=0*10,5,(4)在对全部数组元素赋初值时,可以不指定数组长度。 例如: int a5=0,1,2,3,4 可以写成: int a =0,1,2,3,4 例如: int a10=0,1,2,3,4; 只初始化了前5个元素,后5个元素为0。,6,7.1.4 一维数组程序举例,*例7.2 用数组来处理求Fibonacci数列问题。 main( ) int i; int f20=1,1; for (i=2;i20;i+) fi=fi-2+fi-1; for (i=0;i20;i+) if(i%5=0) printf(“n”); printf(“%12d”,fi); ,7,例7.3 用冒泡法对1

5、0个数排序(由小到大)。 冒泡法:对将进行排序的数,两两比较,如果不满足次序要求, 则交换位置;,第一次 比较,第二次 比较,第三次 比较,第四次 比较,第五次 比较,第一次冒泡排序的结果,n个数经过一次冒泡排序后,最大数(最小数)将被交换到 确定位置,但前面n-1数仍然无序。,第 0 趟冒泡排序,8,从上述我们可以得出: 如果n个数参加冒泡排序,则共要进行n-1趟排序。在第j 趟比较中有n-j个数参加排序,要进行n-j-1次两两比较。本例中 第1趟有5个数参加排序,进行了4次比较。,第一次比较,第二次比较,第三次比较,第四次比较,第二次冒泡排序的结果,第1趟冒泡排序,程序的结构: main

6、( ) ,1、定义相关的数组和相关变量,3、按冒泡算法对其升序排序 由于在排序中涉及到总共所 需的趟次和每一趟中具体比 较的次数,因此可用循环嵌 套控制语句来完成。,4、输出经排序后的十个数,2、输入待排序的十个数,10,*main ( ) int a10; int i,j,t; printf(“input 10 numbers:n”); for (i=0;iai+1) t=ai;ai=ai+1;ai+1=t; printf(“the sorted numbers:n”); for(i=0;i10;i+) printf(“ %d”,ai); ,6.2 二维数组的定义和引用 一、定义 格式: 类

7、型说明符数组名常量表达式常量表达式 如: int a34 ; float b56 ; 说明:1. 多维数组的下标仍从0计起。 例如:a23其元素个数为 6个,即: a00 , a01 , a02 a10 , a11 , a12 2. C 语言中,二维(或高维)数组中的元素是按行 存放。如: a34 数组 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,3. 对二维或高维数组可看成其元素也是数组的数组。 如:a34可看成由三个元素 a0,a1,a2组成。 而每个元素又是一个包含4个元素的一维数组。即 a0 a00 a01 a02 a03 a1 a1

8、0 a11 a12 a13 a2 a20 a21 a22 a23 二、二维数组元素的引用 格式: 数组名下标下标 注意: 下标值同数组大小的匹配。 如: int a34 ; . a34 = 3 ; (是错误的),a34,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,12; 3. 部分赋值 (1) int a34 = 1 , 5 , 9 ; 1 0 0 0 5 0 0 0 9 0 0 0 (2) int a34 = 1

9、, 0, 6 ,0, 0, 11; 1 0 0 0 0 6 0 0 0 0 11 0,(3) int a34 = 1 , 5, 6 ; 1 0 0 0 5 6 0 0 0 0 0 0 (4) int a34 = 1 , , 9 ; 1 0 0 0 0 0 0 0 9 0 0 0 4. int a34 = 1, 2, 3, 12 ; int a 4 = 1, 2, 3, 12 ; 但不能写成: int a3 = 1, 2, 3, 12 ; 5. int a34 = 0, 0, 3, , 0, 10; int a 4 = 0, 0, 3, , 0, 10;,运行结果示意,四、 二维数组程序举列 (

10、 p86) 例 6.4 将一个二维数组行和列元素互换,存到 一个二 维数组中。 如: 1 2 3 1 4 a = b = 2 5 4 5 6 3 6,算法:bji = aij,源程序,main ( ) int a23 = 1 , 2 , 3 , 4 , 5 , 6 ; int b32 , i , j ; for ( i = 0 ; i = 1 ; i + + ) for ( j = 0 ; j = 2 ; j + + ) printf(“%5d”,aij ) ; bji = aij ; printf ( “ n ”) ; printf ( “narray b : n ” ) ; for ( i

11、 = 0 ; i = 2 ; i + + ) for ( j = 0 ; j = 1 ; j + + ) printf ( “ %5d ”, bij) ; printf ( “ n ”) ; ,行列互换结果 array a : 1 2 3 4 5 6 array b : 1 4 2 5 3 6,例 6.5 求一个 3 4 的的矩阵中最大的那个元素的 值,以及其所在的行号和列号。 main ( ) int i, j , row = 0 , colum = 0 , max; int a34=1,2,3,4,9,8,7,6,10,10,5,2; max = a00 ; for ( i = 0 ; i

12、 max ) max = aij; row= i ; colum = j ; printf (“max=%d,row=%d ,colum =%d n ” , max , row , colum ) ; 结果: max = 10 , row = 2 , colum = 1,6.3 字符数组 一、 定义 格式: 一维: char 数组名常量表达式 二维: char 数组名常量表达式常量表达式 如: char c10 ; char a56 ; 二、初始化 例如: char c8 = , H, e, l, l, o, w, ! ; c0 , c1 H, . c7 ! 说明: 1. 所赋的字符个数不能超

13、过数组长度。 2. 如所赋的字符个数小于数组长度,则 其余元素自动赋为空字符 (0)。 如: char c9 = , H, e, l, l, o, w, ! ; c0, c1H, . c7 !, c80,3. 如字符个数与数组长度相等,则可省略数组长度。 由系统自动确定数组长度。 如: char c = ,H,e, l, l, o, w, !; 4. 二维字符数组的初始化与上述一维字符数组的初 始化相同。 如: char diamond55 = , , *, , *, , *, *, , , ,*, , *, , *, , , * ;,* * * * * * * *,三、 字符数组的引用 格式

14、: 数组名下标 例 6.6 输出一个字符串。 main ( ) char c10 = I,a,m,a,b, o,y ; int i ; for ( i = 0 ; i 10 ; i + + ) printf ( “ %c ” , ci ) ; printf ( “ n ” ) ; ,例 6.7 输出一个钻石 图形。 main ( ) char diamond55 = , , *, , *, , *, *, , , ,*, , *, , *, , , * ; int i , j ; for ( i = 0 ; i 5 ; i + + ) for ( j = 0 ; j 5 ; j + + ) printf( “%c ”, diamondij) ; printf ( “ n ” ) ; ,* * * * * * * *,四、 字符串和字符串的结束标志 C语言中规定了一个“字符串结束标志”,用 0表示。 例如:printf ( “ Hellow ! n” ) ; 遇到 0 就停止输出。 可以用字符串常量来初始化

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

当前位置:首页 > 高等教育 > 专业基础教材

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