C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章

上传人:w****i 文档编号:92479127 上传时间:2019-07-10 格式:PPT 页数:25 大小:138.50KB
返回 下载 相关 举报
C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章_第1页
第1页 / 共25页
C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章_第2页
第2页 / 共25页
C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章_第3页
第3页 / 共25页
C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章_第4页
第4页 / 共25页
C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程 教学课件 ppt 作者 陈方第4章(25页珍藏版)》请在金锄头文库上搜索。

1、实际处理的数据,常常是一批批的,而不止是一个。比如,10个同学的年龄,它们都是整型数据,仍用前面的定义方法,可用下面语句说明: int age0,age1,age2,age3,age4,age5,age6,age7,age8,age9; 这里写了10个age,比较麻烦。C语言提供了数组的表示方法: int age10; 数组是具有相同数据类型的变量的集合。各元素可独立地作为一个变量被赋值和使用。数组中每个特定元素都用下标来访问。 数组可以是一维的也可以是多维的。,4.1 一维数组 4.1.1 一维数组的定义 一维数组定义的一般形式为: 类型说明符 数组名常量表达式; 例如: int a10;

2、它表示数组名为a,有10个元素,每个元素都是整型,这10个元素是: a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,说明: (1)数组名定义规则和变量名相同,遵循标识符定义规则。 (2)常量表达式要用方括号“ ”括起来,不能用圆括号(下面用法不对: int a(0);)。 (3)常量表达式表示元素的个数,即数组长度。 (4)常量表达式中包括常量和符号常量,不能包含变量。语言不允许对数组的大小作动态定义。例如,下面这样定义数组是不行的: int n; int an; (5)数组元素的下标从0开始,到(常量表达式1)为止。因此在如上定义的数组中无a10元素。,4.1.2 一维数组元素的

3、引用 数组和其他变量一样必须先定义,后使用。C语言规定除字符数组外,只能逐个引用数组元素,而不能一次引用整个数组。,例4-1 按顺序给数组的10个元素赋值,然后按逆序输出。 程序如下: main( ) int i,a10; for (i=0;i=9;i+) ai= i ; /*顺序给数组元素赋值*/ for (i=9;i=0;i-) printf(“%d“,ai);/*逆序输出数组元素的值*/ 程序运行结果: 9 8 7 6 5 4 3 2 1 0,4.1.3 一维数组的初始化 可以先定义数组,再给它的元素赋值,也可以在定义数组时给它赋值(称为数组的初始化)。对数组元素的初始化可以用以下方法实

4、现: (1)在定义数组时对数组元素赋初值。例如: int a10=0,1,2,3,4,5,6,7,8,9; 将数组元素的初值依次放在一对花括弧内。上面的数组a经过初始化后得: 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; 定义a数组有10个元素,但花括弧只提供5个初值,这表示只给前5个元素赋初值,此时后5个元素值自动赋值为0。 (3)在对全部数组元素赋初值时,可以不指定数组长度。例如: int a5=1,2,3,4,5;可以写成 int a =1,2,3,4,5

5、; 在第2种写法中,花括弧中有五个数,系统就会据此自动定义数组a的长度为5。,例4-2 用数组来处理求Fibonacci数列问题。 main( ) int i,f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5= =0) printf(“n“);/*每行输出5个数据*/ printf(“%8d“,fi); 程序运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,例4-3 用冒泡法对10个数排序(由小到大)。 冒泡法的思路是:将相邻

6、两个数比较,将小的调到前头。 若有10个数: 7,0,4,8,5,9,6,1,3,2 。先进行第1趟比较,第1次将7和0对调,第2次将第2和第3个数(7和4)对调,如此共进行9次,得到0-4-7-5-8-6-1-3-2-(9)的顺序,可以看到:最大的数9已“沉底”,成为最下面的一个数。经第1趟(共9次比较)后,已得到最大的数9。 然后进行第2趟比较,对前9个数按上法进行比较,经过8次比较,得到0-4-5-7-6-1-3-2-(8-9)的顺序;第3趟比较,得到0-4-5-6-1-3-2-( 7-8-9)的顺序;第4趟比较,得到0-4-5-1-3-2-(6-7-8-9) 的顺序;第5趟比较,得到0

7、-4-1-3-2-(5-6-7-8-9)的顺序;第6趟比较,得到0-1-3-2-(4-5-6-7-8-9)的顺序;第7趟比较,得到0-1-2-(3-4-5-6-7-8-9)的顺序;已得到由小到大的顺序,第8、9趟比较不会改变顺序。共比较九趟,在第1趟中要进行两两比较9次(10-1),第2趟比较8次(10-2)第9趟比较1次(10-9)。可以推知,如果有n个数,只要进行n1趟比较,在第j趟比较中要进行nj次两两比较。,main( ) int i,j,t;,a10= 7,0,4,8,5,9,6,1,3,2; for(i=1;iaj+1) t=aj;aj=aj+1;aj+1=t; for(i=0;i

8、10;i+) printf(“%d ”,ai); /*按已排好的次序输出*/ 程序运行结果: 0 1 2 3 4 5 6 7 8 9,4.2 二维数组 4.2.1 二维数组的定义 二维数组定义的一般形式为 类型说明符 数组名常量表达式1常量表达式2 例如:float a34; 定义a为34(3行4列)的数组。注意:不能写成float a3, 4。 C语言中,二维数组中元素排列的排序是:按行存放,即在内存中先顺序存放第1行的元素,再存放第2行的元素。上面定义的数组元素在内存中的存储顺序是: 第1行:a00 a01 a02 a03 第2行:a10 a11 a12 a13 第3行:a20 a21 a

9、22 a23 注意:C语言中二维数组的行号、列号都是从0开始计数,与人们习惯的记法不同。如上述数组第2行第3列的元素为a12,而不是a23。,4.2.2 二维数组的引用 二维数组的元素的表示形式为: 数组名下标下标 例如:a23 引用时注意: (1)使用数组元素时,注意下标值应在已定义数组大小的范围内。 如数组anm,数组元素由a00到an-1m-1共n*m个。 (2)下标也可以是整型表达式,如a2-12*2-1。 (3)数组元素可以出现在表达式中,也可以被赋值。例如:a12=a23/2。,4.2.3 二维数组的初始化 可以用下面方法对二维数组初始化。 (1)分行给二维数组赋初值。例如: in

10、t a34=1,2,3,4,5,6,7,8,9,10,11,12;,这种赋初值方法比较直观,将第1个花括弧内的数据赋给第1行的元素,将第2个花括弧内的数据赋给第2行的元素,即按行赋初值。 (2)将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 效果与第1种方法相同,但如果数据多,写成一大片,容易遗漏,也不易检查。第1种方法一行对一行,界限清楚。 (3)可以对部分元素赋初值: 对各行中的某一元素赋初值: 例如:int a34=1,5,9; 初始化后的数组元素如下: 1 0 0 0 5 0 0 0 9 0 0

11、 0 这种方法对非0元素少时比较方便,不必将所有的0都写出来,只需输入少量数据。, 对某几行元素赋初值: int a34=1,5,6; 数组元素为: 1 0 0 0 5 6 0 0 0 0 0 0 (4)第一维的长度可以不指定: 对全部元素赋初值时,定义时第一维的长度不指定,则第二维的长度不能省。 例如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 等价于:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 系统会根据数据总个数分配存储空间,一共12个数据,每行4列,可确定为3行。 分行赋初值定义时,可以只对部分元素赋初值而省略第一维的长度。 例

12、如: int a 4=0,0,3, ,0,10;,例4-5 有一个34的矩阵,编程序求出其中值最小的那个元素的值及其所在的行号和列号。 解 先用N-S流程图表示算法,如教材书上图4-2所示。 据此写出以下程序: main( ) int i,j,row=0,colum=0,min; int a 4=1,2,3,4,9,8,7,6,-10,10,-5,2;/*第4种赋值方法*/ min=a00; for(i=0;i=2;i+) /*外循环*/ for(j=0;j=3;j+) /*内循环*/ if(aijmin) min=aij;row=i;colum=j; printf(“min=%d,row=%

13、d,colum=%dn“,min,row,colum); 程序运行结果:min=-10,row=2,colum=0,4.3 字符数组 用来存放字符的数组是字符数组。字符数组中的一个元素存放一个字符。 4.3.1 字符数组的定义 字符数组的定义形式为: char 数组名常量表达式; 例如:char c10; 由于在C语言中字符型和整型可以通用,所以上面的定义又可以写为: int c10; 但一般用类型char定义。,4.3.2 字符数组的初始化 (1)可以在定义字符数组时初始化各元素。 例如:char c10=I, ,a,m, ,h,a,p,p,y;,(2)如果花括弧中提供的初值个数数组长度,则

14、作语法错误处理;如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即0)。 例如: char c6=g,o,o,d ; 此时 c4和c5都为0。 (3)如果初值个数与数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。 例如: char c =g,o,o,d; 数组c的长度自动定为4。 (4)二维字符数组也可以初始化。,4.3.3 字符数组的引用 引用字符数组中的一个元素,可以得到一个字符。 例4-6 输出一个字符串。,程序如下: main( ) char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(“%c“,ci);/*依次引用字符数组的元素ci*/ printf(“n“); 程序运行结果:I am a boy,4.3.4 字符串和字符串结束标志 字符串的初始化:用字符串常量来初始化字符数组。例如: char c11=“I am happy“;或 char c =“I am happy“; 或 char c11=“I am happy“;或 char c =“I am happy“; 注意:上述数组c包括8个字母、2个空格,但它长度不是10,而是11。因为字符串常量的最后由系统加上一个0。因此字符串初始化时,可以省略

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

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

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