C语言程序设计(谭浩强编)第七章数组.ppt
《C语言程序设计(谭浩强编)第七章数组.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计(谭浩强编)第七章数组.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 数数 组组 在本章节前给大家讲的都是基本类型的数据,在本章节前给大家讲的都是基本类型的数据,c语言还提供语言还提供了了构造类型构造类型的数据的数据(数组类型数组类型、结构体类型结构体类型、共用体类型共用体类型)。)。数组数组是有序数据的集合,数组中的每个元素都属于同一个是有序数据的集合,数组中的每个元素都属于同一个数据类型。数据类型。7.1 一位数组的定义和引用一位数组的定义和引用7.1.1一维数组的定义一维数组的定义n定义方式:定义方式:类型说明符类型说明符 数组名数组名 常量表达式常量表达式;例:例:int a10;它表示数组名为它表示数组名为a,此数组有此数组有10个元素个
2、元素。n说明:说明:(1)数组名定义规则和变量名相同;)数组名定义规则和变量名相同;(2)数组名的常量表达式用方括弧括起来)数组名的常量表达式用方括弧括起来 (3)常量表达式表示元素的个数,即数组长度。)常量表达式表示元素的个数,即数组长度。例如:例如:a10表示表示a数组共有数组共有10个元素,下标从个元素,下标从0开始开始分别为:分别为:a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 注意注意:没有没有a10。(4)常量表达式中可以包括常量和符号常量,即数组的大小不能)常量表达式中可以包括常量和符号常量,即数组的大小不能依赖于程序过程中变量的值。依赖于程序过程中变量的值。例如:
3、例如:int n;scanf(“%d”,&n);int an;是不合法的。是不合法的。c语言中是先扫描语言中是先扫描全篇分配空间,因此全篇分配空间,因此先先int an后后scanf(.)。7.1.2 一维数组元素的引用一维数组元素的引用 C语言规定,只能语言规定,只能逐个引用逐个引用逐个引用逐个引用数组元素而不能一次引用整个数组。数组元素而不能一次引用整个数组。数组元素的表示形式为:数组元素的表示形式为:数组名数组名下标下标 其中下标可以是其中下标可以是整型常量整型常量整型常量整型常量或或整型表达式整型表达式整型表达式整型表达式。例如:。例如:a0=a5+a7-a2*3n例例7.1 数组元素
4、的引用数组元素的引用#main()int i,a10;for(i=0;i=0;i-)printf(“%d”,ai);一维数组的初始化一维数组的初始化(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,
5、a9=0(3)如果想使一个数组中全部元素值为如果想使一个数组中全部元素值为0,可以写成:可以写成:int a10=0,0,0,0,0,0,0,0,0,0不能写成:不能写成:int a10=0*10(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。7.1.4 一维数组程序举例一维数组程序举例*例例7.2 用数组来处理求用数组来处理求Fib
6、onacci数列问题。数列问题。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.3 用冒泡法对用冒泡法对10个数排序(由小到大)。个数排序(由小到大)。冒泡法冒泡法:对将进行排序的数,两两比较,如果不满足次序要求,对将进行排序的数,两两比较,如果不满足次序要求,则交换位置;则交换位置;985420第一次第一次比较比较895420第二次第二次比较比较859420第三次第三次比较比较854920第四次第四次比较比较第五次第五次比
7、较比较854290854209第一次冒泡第一次冒泡排序的结果排序的结果 n个数经过一次冒泡排序后,最大数个数经过一次冒泡排序后,最大数(最小数最小数)将被交换到将被交换到确定位置,但前面确定位置,但前面n-1数仍然无序。数仍然无序。第第0趟趟冒冒泡泡排排序序从上述我们可以得出:从上述我们可以得出:如果如果n个数参加冒泡排序,则共要进行个数参加冒泡排序,则共要进行n-1趟排序。在第趟排序。在第j趟比较中有趟比较中有n-j个数参加排序,要进行个数参加排序,要进行n-j-1次两两比较。次两两比较。本例中本例中第第1趟有趟有5个数参加排序,进行了个数参加排序,进行了4次比较。次比较。854209第一次
8、第一次比较比较584209第二次第二次比较比较548209第三次第三次比较比较542809第四次第四次比较比较542089第二次冒泡第二次冒泡排序的结果排序的结果第第1趟趟冒冒泡泡排排序序C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 程序的结构程序的结构:main()1、定义相关的数组和相关变量定义相关的数组和相关变量 3、按冒泡算法对其升序排序按冒泡算法对其升序排序 由于在排序中涉及到总共所由于在排序中涉及到总共所 需的需的趟次趟次和和每一趟每一趟中具体比中具体比 较的次数,因此可用循环嵌较的次数,因此可用循环嵌 套控制语句来完成。套控制语句来完成。
9、4、输出经排序后的十个数输出经排序后的十个数 2、输入待排序的十个数输入待排序的十个数*main()int a10;int i,j,t;printf(“input 10 numbers:n”);for(i=0;i10;i+)scanf(“%d”,&ai);printf(“n”);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“the sorted numbers:n”);for(i=0;iai+1aifor i=0 to n-j-1for j=0 to n-2输入输入n个数给个数给a0到到an-1C语语言言程程序序设设计计第第六六
10、章章四川理工学院四川理工学院四川理工学院四川理工学院 6.2 二维数组的定义和引用二维数组的定义和引用 一一、定义定义 格式格式:类型说明符类型说明符数组名数组名常量表达式常量表达式常量表达式常量表达式 如如:int a34;float b56;说明说明:1.多维数组的下标仍从多维数组的下标仍从0计起。计起。例如:例如:a23其元素个数其元素个数为为 6个,即个,即:a00,a01,a02 a10,a11,a12 2.C 语言中,二维语言中,二维(或高维或高维)数组中的元素是按行数组中的元素是按行 存放。存放。如如:a34 数组数组 a00 a01 a02 a03 a10 a11 a12 a1
11、3 a20 a21 a22 a23C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 3.对二维或高维数组可看成其元素也是数组的数组。对二维或高维数组可看成其元素也是数组的数组。如如:a34可看成由三个元素可看成由三个元素 a0,a1,a2组成。组成。而每个元素又是一个包含而每个元素又是一个包含4个元素的个元素的一维一维数组。即数组。即 a0 a00 a01 a02 a03 a1 a10 a11 a12 a13 a2 a20 a21 a22 a23 二、二维数组元素的引用二、二维数组元素的引用 格式格式:数组名数组名 下标下标下标下标 注意注意:下标值同数组
12、大小的匹配。下标值同数组大小的匹配。如如:int a34;.a34=3;(是错误的是错误的)a34C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 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,0,6,0,0,11
13、;1 0 0 0 0 6 0 0 0 0 11 0C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 (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;C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院运行结果
14、示意运行结果示意 四四、二维数组程序举列二维数组程序举列(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=0;i =2;i+)for(j=
15、0;j =1;j+)printf(“%5d”,bij);printf(“n”);行列互换结果行列互换结果 array a:1 2 3 4 5 6 array b:1 42 53 6 C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院例例 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 =2;i+)for
16、(j=0;j max)max=aij;row=i;colum=j;printf(“max=%d,row=%d,colum=%d n”,max,row ,colum);结果结果:max=10,row=2,colum=1C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院6.3 字符数组字符数组 一一、定义定义 格式格式:一维一维:char 数组名数组名常量表达式常量表达式 二维二维:char 数组名数组名常量表达式常量表达式常量表达式常量表达式 如如:char c10;char a56;二二、初始化初始化 例如例如:char c8=,H,e,l,l,o,w,!;
17、c0 ,c1 H,.c7 !说明说明:1.所赋的字符个数不能超过数组长度。所赋的字符个数不能超过数组长度。2.如所赋的字符个数小于数组长度,则如所赋的字符个数小于数组长度,则 其余元素自动赋为其余元素自动赋为空字符空字符(0)。如如:char c9=,H,e,l,l,o,w,!;c0,c1H,.c7!,c80C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 3.如字符个数与数组长度相等,则可省略数组长度。如字符个数与数组长度相等,则可省略数组长度。由系统自动确定数组长度。由系统自动确定数组长度。如:如:char c=,H,e,l,l,o,w,!;4.二维字
18、符数组的初始化与上述一维字符数组的初二维字符数组的初始化与上述一维字符数组的初 始化相同。始化相同。如如:char diamond55=,*,*,*,*,*,*,*,*;*C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 三三、字符数组的引用字符数组的引用 格式:格式:数组名数组名下标下标 例例 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”);C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川
19、理工学院四川理工学院 例例 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语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 四四、字符串和字符串的结束标志字符串和字符串的结束标志 C语言中规定了一个语言中规定了一个“字符串结束标志字符串结束标志”,用,用 0表示。表示。例如例如:printf(“Hellow!n”);遇到遇到 0 就停止
20、输出。就停止输出。可以用可以用字符串常量字符串常量来初始化字符数组。如来初始化字符数组。如:char c =“I am happy”;char c =“Iamhappy”;上述初始化等效于上述初始化等效于:char c =I,a,m,h,a,p,p,y,0;(11个字符个字符)又如又如:char c10=“China”;C h i n a 0 0 0 0 0C语语言言程程序序设设计计第第六六章章四川理工学院四川理工学院四川理工学院四川理工学院 说明说明:1.逐个字符赋值时,并不要求最后字符为逐个字符赋值时,并不要求最后字符为 0,但采用字符串常量赋值时,则会有但采用字符串常量赋值时,则会有 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 谭浩强编 第七 数组
限制150内