新编C语言程序设计教程PPT第6章数组1

上传人:仙*** 文档编号:42148842 上传时间:2021-11-24 格式:PPT 页数:32 大小:356.50KB
返回 下载 相关 举报
新编C语言程序设计教程PPT第6章数组1_第1页
第1页 / 共32页
新编C语言程序设计教程PPT第6章数组1_第2页
第2页 / 共32页
新编C语言程序设计教程PPT第6章数组1_第3页
第3页 / 共32页
点击查看更多>>
资源描述
新编C语言程序设计教程 清华大学出版社周二强 软件学院 计算机科学与工程系配套视频: 博客: 数组数组 6.1 一维数组 6.1.1 一维数组定义 6.1.2 一维数组初始化 6.1.3 一维数组应用 6.2 多维数组 6.2.1 二维数组定义及初始化 6.2.2 二维数组应用 6.2.3 多维数组数组 先看一个程序,它的功能很简单,输入5个学生的英语成绩,输出他们的平均成绩。数组 数组并非一组数, 而是一组变量,定义一个数组,就是定义了一组变量,并且这组变量类型相同。属于数组的变量也称为数组元素。6.1.1 一维数组的定义 一维数组的定义方式为: 类型 数组名整型常量表达式; 其中,类型用来指明该数组所含变量的类型,它可以是整型,浮点型或字符型,也可以是后面要介绍的指针类型,甚至还可以是数组类型本身。 数组名用来标识这组变量,是一个标识符,应符合标识符的命名规则。 整型常量表达式是一个值为整型的常量表达式,常量表达式通常是指操作数为字面量的表达式。常量表达式的值确定数组含有多少个变量,即数组元素的个数,也称数组的长度。语句int a3; 定义了一个整型数组,数组名为a,它有3个数组元素。 数组a的3个数组元素分别是a0,a1和a2。这条语句也可理解为定义了变量名为a0,a1,a2的3个整型变量。int a3; 注意: (1) 数组元素的下标是从0开始的,这是初学数组时最容易出错的地方。应牢记上面的数组a中并没有数组元素a3! (2) 定义数组时,必须用整型常量表达式。如 int n = 3; int an; 中数组的定义方式就是错误的。 (3) 使用数组元素时可以用an的形式,如果n的值为2,则an就是a2。例6-1 求100个学生的英语平均成绩可见,数组不仅解决了定义多个变量的麻烦,而且通过数组定义的多个变量依据下标构成了有序的一组,便于用统一的方法对大批量的数据进行处理。由于数组是多个变量的集合,数组类型在C语言中又称为构造数据类型,而整型、浮点型、字符型则称为基本数据类型。return 6.1.2 一维数组的初始化 与一般变量类似,数组也可以在定义时给数组元素赋值,即数组的初始化。构造数据类型常含有多个变量,初始化时需用多个初值,并置于一对花括号中。初始化数组的基本形式为: 类型 数组名整型常量表达式=value0,value1,. . . ; 各数组元素的初值按照0至n-1的下标次序由左向右依次放在一对花括号中,中间用逗号分隔。 如有int a3 = 1, 2, 3; ,则它相当于 int a3; a0 = 1; a1 = 2; a2 = 3。注意: 1.可以只给前面的部分数组元素赋值,也就是说当花括号中的值用完后,剩余的数组元素自动被赋为0(对于字符型数组,理解为ASCII码值是0的字符)。如char letter3 =A, B; 则letter0 = A ; letter1= B; letter2=0。 2.数组初始化时,可以省略数组的长度,此时数组元素的个数为花括号中初值的个数。如有float f = 3.3, 2.2, 1.1; , 则数组f有三个数组元素,且f0=3.3;, f1=2.2;,f2=1.1。注意: 数组初始化时,常见的错误是用一个初值给全部的数组元素赋值。数组b的3个数组元素初值都为1时,不能用int b3=1;语句初始化, 这条语句的赋值结果为b0=1;,b1=0;,b2=0。 当然,数组元素的初值均为0时, 则可以用int b3=0;语句初始化。例6-2 数组a中是20个学生的数学成绩,请统计优(5),良(4),中(3),差(2)的学生人数。return6.1.3一维数组的应用 例6-3一维数组元素的倒置。如数组元素的值分别为1,2,3,倒置后则变为3,2,1。 分析:如果数组a有n个元素,则倒置时可以让a0与an-1互换值,a1与an-2互换值,这个过程是循环。循环(互换)多少次呢? n为奇数如7时互换3次,n为偶数如6时互换3次,而c语言中7/2 和6/2 的值都是3,可见不管n为何值,均互换n/2 次。 在第i次循环中,ai与哪个元素互换值呢? a0与an-1,a1与an-2,a2与an-3,可见ai与an-1-i互换。例6-3一维数组元素的倒置#define命令是c语言中的宏定义命令,用来将一个标识符定义为一个值。#define命令的格式: #define 标识符 值其中,标识符称为宏名,且宏名通常使用大写字母。在源代码被编译前,程序中出现的宏名都将被相应的值代替。 使用宏的程序容易修改。当查看例6-3中数组元素个数为偶数时程序的运行情况时,只需把宏定义中的7改为6即可,程序中的其它代码无需修改。例6-4 将十进制整数转换成n进制数。 分析:十进制整数转换成n进制数时常用“除以n取余法”。以2进制为例:2511001B。222221263101001125从计算过程可知,转换时需重复地除以n并记下余数。重复即循环,到什么时候为止呢?商为0时止。余数可以用数组保存。例6-4输出十进制正整数的n进制形式。 例6-5 输入5个整数,按升序输出。 本题同练习4中的4.21(如25,22,21,29,23) 分析:考虑例4-17的排序思路。 从第2个数起至第5个数止依次将数插入到前面有序的子序列中构成新的有序子序列,这个过程是循环。在第i次循环中将第i个数插入到前面有序的子序列中。 考虑第i个数的插入过程,这个过程显然也是循环,请结合代码分析程序给出的处理过程。例6-5 输入5个整数,按升序输出。例6-6 将有12个元素的数组按3行4列的格式输出。 分析:循环变量i从0到2,每次输出一行,对于第i行,循环变量j从0到3,每次输出一列。return6.2.1 二维数组的定义及初始化 一维数组的元素类型可以仍是一维数组,此时的数组什么样子呢? 数组a有3个元素,如果每个元素为有4个元素的一维整型数组,则a0、a1和a2就不再是一些普通的变量,而是一维数组,此时有3个元素的二维数组a的形态如图6-1所示。二维数组a的定义 一维数组a0、a1和a2分别有4个整型变量,其中数组a0的元素可以用a00、 a01、a02和a03访问。 类似数组a的数组称为二维数组。二维数组a的定义不用int4 a3;, 而用int a34;。二维数组a的定义 二维数组可用于存储矩阵,因此常说几行几列的二维数组。数组a可以称作3行4列的二维数组,其直观理解如图6-2所示。二维数组的初始化 由图6-2可知,二维数组的初始化形式为,.。如float f23 = 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; 当然也可对部分元素赋值。如int a32 = 1, 0, 0, 3;语句可将二维数组a的各元素初始化为 二维数组的初始化 由图6-1可知,二维数组的元素亦如一维数组的元素,依次排成一行,它们的初始化也可如一维数组的形式,将所有初值放在一对花括号内。 如有float p23 = 1.0, 2.0, 3.0, 4.0, 5.0;,则 p00=1.0,p01=2.0,p02=3.0,p10=4.0,p11=5.0,p12=0。return6.2.2 二维数组的应用 例6-7 把二维数组b23=1, 2, 3, 4, 5, 6的数组元素分别按行、按列输出。 分析:按行输出时,先循环输出每行,对于第i行再循环输出每列。输出结果为 按列输出时,先循环输出每列,对于第i列,再循环输出该列上的每行。输出结果为 b23=1,2, 3, 4, 5, 6例6-8 找出一个矩阵的鞍点 一个矩阵的鞍点是指该位置上的元素在该行上值最大,在该列上值最小。 分析:需要循环处理每行,查找每行中可能的鞍点。 对于第i行,首先找到此行的最大值aij,然后判断aij是否是第j列的最小值。如果是则i行j列就是一个鞍点,否则在第i行没有鞍点。 找第i行的最大值aij需要用循环,判断aij是否是第j列的最小值也需要用到循环。例6-9 打印出下面形式的杨辉三角 分析:规律为第n行有n个数字,每行的第1个和最后一个数字是1,其它数字等于上一行的前列和同列的两个数字之和。 可以用二维数组存储数据。数组元素的取值规律为第一列或对角线上的元素值为1,即j = 0或者i=j时,aij=1;其他情况下,aij=ai-1j+ai-1j-1。注意程序中元素赋值后会立即输出,这样可以少一次循环。杨辉三角return6.2.3 多维数组 二维数组所含变量的类型仍可以为一维数组,这样的数组称为三维数组。语句int a342;定义了一个三维数组,它的形态如图6-3所示。例6-10 三维数组的初始化return
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!