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