C语言教学 第7章.ppt
《C语言教学 第7章.ppt》由会员分享,可在线阅读,更多相关《C语言教学 第7章.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章数组与字符串p 数组概述 p 一维数组 p 二维数组 p 多维数组 p 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 p 一维数组 p 二维数组 p 多维数组 p 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 一维数组 p 二维数组 p 多维数组 p 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 一维数组 二维数组 p 多维数组 p 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 一维数组 二维数组 多维数组 p 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数
2、组概述 一维数组 二维数组 多维数组 字符串 p 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 一维数组 二维数组 多维数组 字符串 综合应用杨辉三角 p 跟我上机 第7章数组与字符串 数组概述 一维数组 二维数组 多维数组 字符串 综合应用杨辉三角 跟我上机 7.1 数组概述 到目前为止,所使用的变量都有一个共同的特点,就是每个变量只能存储一个数值,比如定义三个变量num,money和cname,代码如下:int num;doulbe money;char cname;这三个变量属于不同的数据类型,所以只能一次定义一个变量,如果这三个量属于同一种数据类型,就可以使用数组一起定
3、义多个变量。7.1 数组概述数组表示的是一组数据类型相同的数,这组数当中的每一个元素都是一个独立变量,数组就是用来存储和处理一组相同类型的数据的。序号成绩代码5605e370b180c490.5d2100a7.2 一维数组7.2.1 一维数组的定义7.2.2 一维数组的初始化7.2.3 一维数组元素的操作7.2.4 数组作为参数传递7.2.5 一维数组的应用举例7.2.1 一维数组的定义一维数组定义的一般形式为:类型说明符 数组名常量表达式;例如:int code5;或者#define NUM 5int codeNUM;上述两种形式都正确的定义一个名称code的整型数组,该数组含有5个整型变量
4、,这5个整型变量的下标,依次是:code0、code1、code2、code3和code4。在C语言当中,数组的下标总是从0开始记的,而不是从1开始,这一点大家需要格外注意,特别是最初接触到数组。7.2.1 一维数组的定义使用code数组存储上节中建立的数据表中的序号列中的数据,如下表所示 序号数组5code03code11code24code32code453142低地址高地址4个字节7.2.1 一维数组的定义表中数组code中元素code0是一个整型变量,它存储的是数据5,它在使用上一般的变量没有区别,比如int x=5,code0与x不同的地方只是code0采用了数组名和下标组合的形式。
5、比如下面的代码:printf(“code0=%d,code4=%dn”,code0,code4);输出结果是code0=5,code4=2又如下面的代码:for(int i=0;i5;i+)printf(“code%d=%dn”,codei);输出的结果是code0=5code1=3code2=1code3=4code4=27.2.1 一维数组的定义1.数组定义的说明 数组使用的是方括号,不要误写成小括号()。int name(10);/*是错误的形式*/数组命名必须按照命名规则。数组下标总是从0开始的,以上面定义的code数组为例,数组的元素下标的范围是从0到4,而不是从1到5,大于4的下标
6、会产生数组溢出错误,下标更不能出现负数。code0/*是存在的,可以正确的访问*/code4/*是存在的,可以正确的访问*/code5/*是不存在的,无效的访问*/code-1/*是错误的形式*/7.2.1 一维数组的定义 定义数组时,code5中括号中的数字5,表示的是数组中元素的总数,使用数组时,code2=1中括号中的数值是下标,表示的是使用的数组中哪一个元素。在定义数组元素总数时,如上例中的5或者NUM,在数组的定义时,要求括号中数据一定要是常量,而不能是变量,但是数组定义后,使用该数组的元素时,下标可以是常量,也可以是变量,或者表达式。7.2.1 一维数组的定义int number=
7、5;int codenumber;/*在编译这样代码时,编译器会报错*/假如code数组已经正确定义,下面的使用是正确的int n=3;coden=100;/*等价于code3=100;*/coden+1=80;/*等价于code4=80;*/coden/2=65;/*等价于code1=65,这个是需要注意的,下标只能是整数,如果是浮点数编译器会舍弃小数位取整数部分*/code2=code1+n;code0=99.56/*等价于code0=99,因为code0本就是一个整型变量,赋值时数据类型转换,直接把浮点数舍弃小数位后赋值给了code0*/7.2.1 一维数组的定义2.其他类型数组的定义
8、整型数组的定义int array10;/*包含10个整型元素的数组名为array的数组,下标范围从0到9*/浮点型数组的定义float score3;/*包含3个float类型元素的数组名为score的数组,下标范围从0到2*/字符型数组的定义char name5;/*包含5个char类型元素的数组名为name的数组,下标范围从0到4*/7.2.1 一维数组的定义3.数组的地址数组code的存储区域,在某一个地址中存储了code0元素值5,然后地址从低到高,每次增加4个字节(int类型占用4个字节),顺序存储了其他数组元素的值。假如现在已知code0在内存的地址,那么code1的地址是多少呢?
9、code1的就是在code0的地址基础上加4个字节,同理,code4的地址就是在code0地址的基础上加4个*4字节,共16个字节。所以对于数组,只要知道数组的首地址,那么就可以根据偏移量计算出待求数组元素的地址。7.2.1 一维数组的定义数组的首地址又怎么得到呢?其实C语言在定义数组时就已经为预先设置好了这个地址,这个预设值就是数组名。比如要输出数组的首地址,就可以采用下面的方式。printf(code的首地址是%dn,code);输出结果就是code数组的首地址值,关于地址的更多的使用方法,大家可以参看后续指针章节详细讲解。7.2.2 一维数组的初始化1.先定义数组,再进行初始化如下代码:
10、int code5;/*定义整型数组,数组有5个元素,下标从0到4*/code0=5;/*数组第0个元素赋值*/code1=3;/*数组第1个元素赋值*/code2=1;/*数组第2个元素赋值*/code3=4;/*数组第3个元素赋值*/code4=2;/*数组第4个元素赋值*/7.2.2 一维数组的初始化2.在定义的同时对其初始化int code5=5,3,1,4,2;/*定义整型数组,同时初始化数组的5个元素*/数学当中使用 表示的是集合的含义,这里也一样,这对括号就是圈定了这组数组的值,或者省略数组元素个数,如下面的语句:int code=5,3,1,4,2;因为 中是每个数组元素的初值
11、,初始化也相当告诉了数组中有多少个元素,所以可以省略 中的5。对于定义数组同时对其初始化,可以省略中括号中数组的个数,但是如果分开写就是错误的,如下面的代码所示。7.2.2 一维数组的初始化int code5;/*定义数组*/code5=5,3,1,4,2;/*错误的赋值*/或者code=5,3,1,4,2;/*错误的赋值*/上面都是错误的形式。int code;/*错误的数组定义*/code0=5;/*错误的赋值*/code1=3;/*错误的赋值*/定义数组时没有定义数组元素的个数,使用时就会发生异常,原因是内存中并没有为数组code开辟任何存储空间,数据自然无处存放。7.2.2 一维数组的
12、初始化数组初始化时常见的其他情况如下所示。定义数组时省略 内元素总数int code10=1,2,3,4,5;/*表示code数组共有10个元素,仅对前5个进行了初始化,后面5个元素编译器自动初始化为0*/int code=1,2,3,4,5;/*表示code数组共有5个元素,初始化code0=1,code1=2,.,code4=5*/元素初始化为0int code5=0,0,0,0,0;或者int code5=0二者含义相同,都是对5个元素初始化为0,显然第二种方式更为简洁。7.2.3 一维数组元素的操作int i;int array5=1,2,3,4,5;/*定义数组,同时初始化*/for
13、(i=0;i5;i+)/*循环访问数组元素*/printf(%d,arrayi);输出结果是1,2,3,4,5此代码中定义array为整型数组,包含5个整型元素,并同时初始元素值,分别是:array0=1,array1=2,array2=1,array3=2,array4=5for语句中循环变量i初值是0,终值是4,步长是1,调用printf()函数就可以访问到数组array中的每一个元素了。注意:变量i的范围是04,否则程序会报数组溢出错误。7.2.3 一维数组元素的操作【范例范例7-1】一维数组的输入输出。一维数组的输入输出。01#include 02#define MAXGRADES 5
14、/*数组元素总数*/03 int main(void)04 05 int codeMAXGRADES;/*定义数组*/06 int i;07 /*输入数据*/08 for(i=0;i MAXGRADES;i+);/*循环遍历数组*/09 10 printf(输入一个数据:);11 scanf(%d,&codei);/*输入值到codei变量中*/12 13 /*输出数据*/14 for(i=0;i MAXGRADES;i+)15 printf(code%d=%dn,i,codei);/*输出codei值*/16 return 0;17 7.2.3 一维数组元素的操作【范例范例7-2】使用一维数
15、组计算元素的和以及平均值。使用一维数组计算元素的和以及平均值。01#include 02#define MAX 5/*数组元素总数*/03 int main()04 05 int codeMAX;/*定义数组*/06 int i,total=0;07 for(i=0;i MAX;i+)/*输入数组元素*/08 09 printf(输入一个数据:);10 scanf(%d,&codei);11 12 for(i=0;i MAX;i+)13 14 printf(%d,codei);/*输出数组元素*/15 total+=codei;/*累加数组元素*/16 17 printf(n和是%dn平均值是
16、%dn,total,total/MAX);/*输出和和平均值*/18 return 0;19 7.2.4 数组作为参数传递如何把数组作为参数传递给函数?可以使用数组名作为参数进行传递。例如,主函数中有整型数组定义:int array5;调用函数的语句如下:findMax(array);这里使用数组名作为参数传递给函数findMax(),实参数据类型需要和形参数据类型一致才可以,所以可以这样定义findMax()函数的参数。void findMax(int a5)或者可以省去数组5,写成下面的形式void findMax(int a)7.2.4 数组作为参数传递【范例范例7-3】求数组最大值。求
17、数组最大值。01#include 02#define MAXELS 503 void findMax(int MAXELS);/*定义函数*/04 int main()05 06 int numsMAXELS=2,18,1,27,16;/*数组初始化*/07 findMax(nums);08 return 0;09 10 void findMax(int valsMAXELS)/*查找最大值函数*/11 12 int i,max=vals0;13 for(i=1;i MAXELS;i+)14 if(max valsi)15 max=valsi;16 printf(The maximum val
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言教学 第7章 语言 教学
限制150内