c语言程序设计第6章数组,C语言程序设计 第6章数组.pptx

c8da8f5a7cda2d62dda9e5a200b168b9.gifC语言程序设计 第6章数组.pptx

第6章数组,C语言程序设计,数组是有序并具有相同类型的数据的集合。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或构造类型。所谓构造类型,即指由若干基本类型数据按一定的规则所构成的复杂数据类型。,,6.1一维数组,1.一维数组的定义在C语言中使用数组必须先进行类型说明。数组说明的一般形式如下类型说明符数组名常量表达式;例如inta10;/*说明整型数组a,有10个元素*/数组的类型实际上是指数组元素的数据类型。对于同一个数组,其所有元素的数据类型都是相同的。数组名与变量名的命名均遵循标识符的命名规则。在同一程序中,数组名不能与其他变量名相同。例如,,6.1一维数组,上面的程序是错误的。数组名后方括号中是整型常量表达式,表示数组元素的个数,下标是从0开始的。如“a5”表示数组a有5个元素,分别为a0,a1,a2,a3,a4。定义数组时,常量表达式中可以包含符号常数或常量,但不能包含变量。不允许对数组的大小作动态定义。例如,,6.1一维数组,合法的数组定义charstr20;/*定义一个有20个元素的字符型数组str*/floatscore8;/*定义一个有8个元素的浮点型数组score*/inta,b,k10;/*定义变量a,b和10个元素的整型数组k*/defineN5longdaN;/*N为符号常量,定义一个有5个元素的长整型数组da*/shortz4*N;/*N为符号常量,定义一个有20个元素的短整型数组z*/,,6.1一维数组,非法的数组定义intarray(10);/*数组长度必须使用“”括起来*/intn;floatscoren;/*定义数组时表达式不允许包含变量*/charstr;/*数组长度不确定*/charstr10.6;/*数组长度不能是浮点常量*/intn;scanf(d,/*定义数组时表达式不允许包含变量*/,,6.1一维数组,合法的数组定义charstr20;/*定义一个有20个元素的字符型数组str*/floatscore8;/*定义一个有8个元素的浮点型数组score*/inta,b,k10;/*定义变量a,b和10个元素的整型数组k*/defineN5longdaN;/*N为符号常量,定义一个有5个元素的长整型数组da*/shortz4*N;/*N为符号常量,定义一个有20个元素的短整型数组z*/非法的数组定义intarray(10);/*数组长度必须使用“”括起来*/intn;floatscoren;/*定义数组时表达式不允许包含变量*/charstr;/*数组长度不确定*/charstr106;/*数组长度不能是浮点常量*/intn;scanf(d,/*定义数组时表达式不允许包含变量*/,,6.1一维数组,2.一维数组的存储结构数组定义后,系统在内存中分配一片连续的存储单元存放数组元素的值,按数组元素下标从小到大连续存放。其所占内存单元的大小与数组元素的类型和数组长度有关。计算数组所占内存单元字节数的公式数组占内存单元的字节数数组大小sizeof(数组元素类型)如定义数组a为“inta20;”,则数组a所占内存单元的字节数为20sizeof(int)20480(B)。数组每个元素字节数相同,因此,根据数组元素序号可以求得数组各元素在内存中的地址,计算数组某个元素在内存中的地址公式,,6.1一维数组,数组元素地址数组首地址元素下标*sizeof(数组类型)如定义数组a为“inta5;”,设数组a的首地址为1000,则数组元素a3的地址为10003*sizeof(int)1012。数组a存储结构如图6-1-1所示。,,6.1一维数组,3.一维数组的初始化数组初始化赋值是指在数组说明时给数组元素赋初值。数组初始化是在编译阶段进行的,可减少运行时间,提高效率。初始化赋值的一般形式如下类型说明符数组名常量表达式值,值,,值;在“”中的各数据值即为各元素的初值,各值之间用逗号间隔。例如“inta100,1,2,3,4,5,6,7,8,9;”相当于a00;a11;;a99。,,6.1一维数组,注意可以只给部分元素赋初值。当“”中值的个数少于元素个数时,只给前面部分元素赋值。如“inta100,1,2,3,4;”表示只给a0a4这5个元素赋值,而后5个元素自动赋0值。只能给元素逐个赋初值,不能给数组整体赋初值。如给10个元素全部赋1值,只能写为“inta101,1,1,1,1,1,1,1,1,1;”,而不能写为“inta101;”。若给全部元素赋初值,则在数组说明时可以不给出数组元素的个数。如给5个元素赋初值时,“inta51,2,3,4,5;”可写为“inta1,2,3,4,5;”。,,6.1一维数组,4.一维数组的元素的引用数组元素是组成数组的基本单元。数组元素也是一种变量,通常称为下标变量。在C语言中只能逐个地使用数组元素,而不能一次引用整个数组。数组元素的一般形式如下数组名下标例如“输出有10个元素的数组,可使用循环语句逐个输出各下标变量”如下其中不能用“printf(d,a);”语句输出整个数组。,,6.1一维数组,【例6.1.1】运用数组从键盘输入10个整数,然后依次输出。,程序运行结果1234567891012345678910,,6.1一维数组,【分析】利用循环语句,从键盘输入10个数,并将这10个数赋值给数组a的元素a0a9。利用循环语句,将数组a的10个元素依次输出。流程图如图6-1-2所示。,,6.1一维数组,,6.1一维数组,注意数组的下标只能为整型常量或整型表达式,若为实数将自动取整。例如“a5”“aij”和“ai”都是合法的数组元素。,,6.1一维数组,5.一维数组实例【例6.1.2】用循环语句给a数组各元素赋奇数值1,3,5,7,然后逆序输出。,,6.1一维数组,程序运行结果191715131197531【分析】利用循环语句,从键盘输入10个奇数,依次赋值给数组a的元素a0a9。利用循环语句,将数组a的10个元素,按照a9a0的顺序输出。流程图如图6-1-3所示。,,6.1一维数组,,6.1一维数组,【例6.1.3】输入10个整数,找出最大数和最小数并对调,然后输出。,,6.1一维数组,,6.1一维数组,程序运行结果2060115397663288754320609753116632887543【分析】定义一个一维数组a存放10个数,定义变量max存放最大值,变量min存放最小值,变量k存放最大值下标,变量j存放最小值下标。先假设第一个元素a0为最大值和最小值,然后a1a9的各个元素依次与a0比较。若“aimax”,则“maxai;ki;”;若“aimin;”,则“minai;ji;”。当所有的数都比较完之后,将最大值与最小值进行交换“ajmax;akmin”。然后输出a数组。流程图如图6-1-4所示。,,6.1一维数组,,6.1一维数组,【例6.1.4】输入10个整数,按从小到大的顺序输出。,,6.1一维数组,程序运行结果10numbers30255341289435810021thesortednumbers21221303443555889100,,6.1一维数组,【分析】输入10个整数。利用冒泡法排序。冒泡法的基本思路每次将相邻的两个数比较,将较小的数调到前面。若有5个数分别为6、8、7、5、3为例,排序过程如下第1次先将最前面的两个数比较,因为6字符串2,返回值0;字符串1字符串2,返回值0。该函数也可用于两个字符串常量的比较,或者字符数组与字符串常量的比较。,6.3字符数组,,(6)测字符串长度函数strlen()格式如下strlen(字符数组名)它的功能是测试字符串的实际长度(不含字符串结束标志0),并作为函数返回值。,6.3字符数组,本章主要介绍了数组的定义、存储、初始化及引用等基本概念。区分数组名与数组元素;正确理解数组在内存中的空间分配;能运用数组进行排序、查找、求极值等,以达到掌握运用数组编程寻求解决问题的方法。,,本章小结,1.程序填空要求给a数组输入数据并以每行4个数据的形式输出。,,习题,2.程序填空要求将二维数组a的行元素和列元素互换后存到二维数组b。,,习题,,习题,3.程序填空求矩阵a两条对角线上的元素之和。,,习题,,习题,4.程序填空求1000以内的水仙花数。水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如407444000777,所以407是一个水仙花数。,,习题,,习题,5.程序填空要求输出字符串“computer”。,,习题,6.编程从键盘输入若干整数,用-1作为输入结束的标志,统计正整数的个数。,,习题,7.编程数组a包括10个整数,将a中所有的数除以5取余数存入数组b中,并按每行3个元素的格式输出数组b。,,习题,8.编程从键盘输入两个字符串a和b,要求把字符串b的前5个字符连接到字符串a中(不使用库函数strcat())。如果b的长度小于5,则把b的所有元素都连接到a中。,,习题,9.编程通过赋初值按行顺序给一个23的二维数组赋2、4、6等偶数,然后按列的顺序输出该数组。,,习题,10.编程通过循环按行顺序给一个55的二维数组a赋125的自然数,然后输出该数组的左下三角。,,习题,谢谢观看THANKYOU,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值