罗泽兵 发表于 2024-4-15 08:48:20

11.第11节课第六章利用数组处理批量数据

好同学们,大家好,今天呢,我们为大家讲解一下我们C语言当中数组的。这样一部分内容。那么,为什么我们要用数组呢?迄今为止,我们在程序中呢?接触到的呢?都是属于基本类型的数据,比如说。整型字符型实型,那么这些数据它们都是简单的数据类型,对于简单的问题呢,

用以上简单的数据类型处理就可以了。但对有些数据对象呢,用简单的数据类型还不能充分反映出数据的特性。从而对他们进行有效的操作,比如说我们要处理一个班有50个学生的成绩,如果用普通的变量来代表50个学生的成绩呢?就要用50个变量,那么如果有100个学生呢?那么我们就要用100个变量,显然呢,是很不方便的。应当呢,有简化的方法,那么我们可以想这样一种方法,比如说既然呢,

我们要处理的都是同一类性质的数据,那么比如说。都代表学生的成绩,那么就可以用同一个名字,比如说一个符号来代表他们,而在这个名字的右下角呢?加下标来表示是哪一个学生的数据,比如说我们在这样一个符号的右下角呢,加一+2+3,一直加到50。代表50个学生的成绩,这样呢,这些数据就不是零散的,互不相关的数据,而是一组具有同一属性的数据。

那么,这样一组数据呢?就称为一个数组,那么我们这个符号呢?称为数组名。下标了代表学生的序号啊,我们来看一下这个例子。比如说我们要向计算机输入全班50个学生的一门课的成绩,我们可以呢,用50个float型就是一个浮点型变量。来表示,学生的成绩,那么我们这样的解决方法呢?是比较复杂的,我们要输入50个学生的成绩呢?

就要用50个float型,简单变量。那么,如果有一百一千名学生怎么办呢?那么我们就要用一百一千个这样的数据的,这样一个简单变量。我们这里呢,比较繁琐,没有反映出这些数据间的内在联系,实际上这些数据呢,是同一个班级,同一门课程的成绩。它们具有相同的属性。那么我们可以呢,用刚才我们讲过的数组这样一个方式呢来进行解决,

数组呢是一组有序数据的集合。数组中各数据的排列呢,是有一定规律的下标,表示数据在数组中的序号,我们用数组名和下标即可,唯一的确定数组中的元素。数组中的每一个元素呢,都属于同一个数据类型。刚才我们讲过,我们用一个符号来表示,我们的数组名。在右下角呢,写上我们的序号,表示我们是第几个学生的成绩,那么比如说这样一个s15,

我们就代表着了。是这样一个数组名加下标表示的学生的这样一个成绩部分,我们可以把它写作s方括号15,那么这样一个类,这样一个部分。那么,首先我们来看一下一维数组,一维数组呢,是最简单的数组,数组元素呢,只有一个下标。比如说我们的。a10。a1,a2,

a3,a4,a5,a6,a七八,a9这样一些部分,那么我们来看一下一维数组。我们一维数组呢,怎么样定义呢?定义的方法就是类型说明符,类型说明符,加上数组名,加上一个常量表达式。我们来看一下这个例子inta方括号十这里的int呢,表示的是整型数组,

就是我们数组中的元素呢,均为整型。这里的a呢,表示的是我们的数组名为a,它的这个符号是a,表示我们数组的名字是a。这里的十呢,方括号十表示数组含有十个整形元素,我们数组名的命名规则和变量名相同。遵循标志符命名规则,在定义数组时需要指定数组元素的个数。方括号中的常量表达式用来表示,元素的个数就是我们的数组长度。常量表达式中呢,可以包含常量和符号常量,

但是呢,不能包包含变量。我们来注意大家看一下这样一个定义数组的方式inta 10,这代表了定义一个整形数组,并且呢,数组中呢,有十个元素。但是呢,我们的数组的下标是从零开始就是零一二三四五六七八九定义inta 10这样一个数组呢。代表有十个元素,最大下标值的为九,那么不存在数组元素a10,它是下标从零开始的,这样一个部分。那么,

我们来看一下引用一维数组元素,对十个数组元素呢,依次赋值零一二三四五六七八九要求呢,按逆序输出。我们来看一下这个程序。井号interludes dk标准输入输出库函数头文件编译预处理,把它包含在我们的程序当中。in term函数使用的数据类型呢?是int型返回一个整型值。位是我们的主括号,主函数两个大括号之间呢,是我们的主函数,那我们看一下函数的功能部分in TIA 10。这里呢,是定义一个整型变量I再定义一个整型数组a10a。

并且呢,a当中这个数组呢,有十个元素好,我们来看一下后面的部分for循环for I=0 I小于等于9I加加。这里呢,为I赋初值是零,它的这样一个循环。判断条件呢,是我们的I小于等于九变量的改变的这个部分呢,是我们的I加加增量呢,是I次增一,那么iai=I把I呢?赋给我们的AI这样一个数组元素,这样一个让它这样一个让让它。是这样的,

值的这样,有这样的值的这样一个部分,那么接下来呢,我们再进行输出for I=9 I大于等于0I减减,那么这里呢?将I呢,把它初值呢,设为九把它的这样一个循环判断循环条件呢,把它判设置为了I大于等于0I。循环的这样一个。变量的改变的部分呢,称把它设置为I减,减I字减一,那么这样一个我们循环体当中的部分呢,就是我们的printf百分号dai。

那么,这里呢,就是输出a9到a0共十个元素,那么最后呢,一个printf返时按就是一个换行return 0函数返回零值函数程序结束。我们来看一下程序的运行结果,这就是我们程序的运行结果。那么,九八七六五四三二一零。我们最先呢,为这样一个数组a0到a9赋值赋予零一二三四五六七八九,然后呢,按照利序。输出这十个数组源这十个数字,那么就是我们的九八七六五四三二一零,

那么就是我们。对十个数组元素呢依次赋值,然后呢,按照逆序进行输出,那么这是我们这样一个程序的部分,我们第一个负循环呢是a0到a9的值呢为零到九。就说将零赋给a,零一赋给a,1a二赋给a,二九赋给a,九第二个for循环,按照a9到a0的顺序来输出各元素的值。那么,我们来看一下一维数组的初始化,为了使程序简洁呢,

常在定义数值时呢,同时给各数组元素赋值,这称为数组的初始化。在定义数组时呢,会全部元素进行赋初值,比如说inta 10。等于大括号零一二三四五六七八九将数组各元素的初值呢?放在一对花括号中数据间,用逗号分隔花括号内的数据呢?称为初始化列表。那么我们也可以呢,对数组中的一部分元素赋值,比如说。比如说inta 10等于零一二三四,那么定义a数组呢?

有十个元素,但花括号里呢?只提供五个初值,这表明了只给前面的五个元素赋初值。系统呢,自动给后五个元素赋零赋初值零。那么,我们还有一种方法,给数组中的全部元素呢?赋初值零。那么,比如说inta 10等于或者呢inta 10=0,那么未赋值的部分元素呢?自动设置为零。那么我们还可以呢,

在对全部数组元素赋初值的时候呢,由于数组元素的个数已经确定,因此呢,可以不指定数组长度,比如说我们的。要对全部元素赋初值的时候呢,我们有五个数组,我们有五个,这样一个数据,那么我们就对这样一个数组呢,进行赋值,那么就inta。方括号一二三四五那么这样一个。数组的长度呢?那么就可以不指定,

那么就是我们数组的个数的这样一个数的这样一个部分,如果数组长度呢?与提供数初值的个数不同。则方括号内的数组长度呢,不能省略。那么,这是一维数组的初始化,那么我们来看一下我们利用非不,我们利用一维数组程序呢?英文数组呢来处理菲波那契数列的这样一个问题,那么我们看一下这个程序include。井号includes dd二点h头文件编译处理,那么标准输入输出库函数,把它包含在程序当中。in term inter是函数使用的数据类型main呢?

是我们的主函主主函数。后面两个大括号呢,是我们的函数体啊,我们来看一下函数的功能部分inti定义,一个整型变量I in TF 20等于一一,那么我们就是将我们的数组元素呢?前两个赋予初值一一,那么后面的呢?就是我们的系统的自动赋零值,那么for I。等于2I小于20I加加,这里呢设I的初值为二。循环条件的这样一个判断的这样一个条件呢,是I小于20。变量的改变的情况呢?

它的。变化情况呢,是它的自增1I增量呢,是I加加自增一。好,接下来呢,是我们的循环体fi=fi- 2+fi- 1。这里呢,就是我们的变量的,我们数组的。数组元素呢,等于前两个数组元素之和,那么这样呢,我们就可以求出f2到f19的这样一个值。那么接下来呢?

我们再一再一次进行循环for I=0 I小于20I加加if I某五=0,那么就是当I能被五整除的时候呢?我们printf那么一个反斜杠n进行一个换行控制。每输出五个数后进行换行,然后呢printf百分号12 df I输出一个数,那么就是输出了我们数组元素,这样一个数。我们这里的fi呢,表示的是数组当中的一个数组元素的这样一个。部分。那么,这个数组元素呢?这个I呢?表示它是第几个数组元素?那么就是第几?

它是它是哪一个下哪一个下标的?这样一个数组元素的这样一个部分。那么就输出这个数组元素的这样一个值的值的部分,最后呢,printf返星杠n return 0函数返回一个零值,那么程序结束,那么这就是我们。程序运行的这样一个结果值一一二三五八十三,那么这样写部分。那么我们再来看一下,用一维数组呢,那么进行我们。这样一个问题的解决,这样一个方式,比如说有十个地区的面积要求对它们呢,

按由小到大的顺序排列。我们。看一下这个程序。井号interludes之间的hinter minta 10定义一个整型数组,那么有十个元素。I nt I gt定义三个整型变量printf in putten。numbers返修in。输入十个数字,那么for I=0 I小于10I加加scan f反斜百分号d这样一个取AI的这样一个地址,那么就是说我们将我们输入的这个。数据呢,把它存放在我们AI的这样一个数组元素当中,接下来那么从a0呢那么开始。输入这样一个输入这样一个从a0呢开始这样一个放在这样一个数组的这样一个元素的这样一个位置的这样一个部分。接下来是printf反斜杠n for j等于零j小于九j加加,

然后呢,是内存循环for I等于零I小于九减ii加加。if AI.大于AI AI+1,那么t=AI AI=AI+1 AI+1,等于t那么如果呢?我们的。相邻的两个数进行比较,如果AI。大于AI+1那么呢,就把它如果前一个数呢?大于后一个前。前前一个数组元素大于后一个数组元素的值,那么呢,就把它们进行一个交换,

那我们在每一趟中呢,进行九减j次比较。那么就是说我们。每次去进行九点接一次比较,那么我们进行比较的时候呢?我们是。相邻的两个数之间,两个数组元素之间那么进行值的比较,那么这样每一趟比较下来呢?那么我们就。那么找到了。一个。大的这样一个数的这样一个部分,那么将它放在一个数组元后面的数组元素当中,接下来的第二趟呢再进行比较,

那么进行了九次循环进行九趟比较,那么这是我们。比较的这样循环,比较的这样一个方式,那么接下来呢?printf的the sort y的。numbers那么for I=0 I小于10I加加printf百分号dai,这是输出我们依次输出我们。数组元素的值,那么printf把反斜杠n return 0这样一个函数结束,返回一个零值,那么这就是我们程序运行的结果,那么输入十的这样一个数字。然后呢,按照由小到大的顺序呢,

进行一个排列,那么就是说我们程序运行的这样一个结果,那么这里呢,大家要注意,我们这样一个排序的方式,我们是两两进行比较每一趟呢。那么,我们找到我们,我们去量了,我们每次呢进行比较,那么依依次呢进行比较比较出来了,找到一个大的数了,那么放在一个位置。放在一个这样一个数组的这样一个部分,然后呢,

再进行这样一个运用的比较部分,那么这是我们。排序的这样一个方式。那么,接下来我们再看一下定义和引用二维数组,那么比如说。我们有这样一个例子,我们有三个分队,每个分队呢,有六名队员要把这些队员的工资呢,用数组保存。起来以备查,那么如果我们建立一个数组。配呢,它应该是二维的,

用第一维来表示第几分队,第二维用来表示第几个队员,比如说k二三。表示第二分队第三名队员的工资,它的值呢是1725。二维数组呢,常称为矩阵,把二维数组呢写成行列的排列形式,那么可以有助于了形象化的理解,二维数组的逻辑结构。那么,我们来看一下定义二维数组,我们定义二维数组呢?它的这样一个格式呢?是首先是类型说明服务,

然后是数组名,然后呢是常量表达式。和一个常量表达式这样一个常量表达式呢,要写在一个方括号当中,那么第一第一个呢是方括号当中呢,写一个常量表达式。第二个方括号当中呢,写一个常量表达式,那么大家看一下这样一个定义的方式float a方括号,三方括号,4b方括号,五方括号十,那么首先呢,是定义一个a为三乘四三行四列的数组。b为五×15行十列的数组,

那么如果我们在一个方括号内呢,写上了三四或者说50,那么这样呢,是不正确的,这样一个部分是不正确的,在一对方括号内呢,不能写两个下标。那么,比如说我们看一下这个例子float配三六float,表示我们的二维数组的类型还是我们的float型浮点型?配呢,表示我们的表示我们的数组名数组名呢,是我们的配第一个三表示了数组的第一位有三个元素,那么表示有三行。第二维有六个元素,

表示了有六列,那么就是float配三六,那么这样一个部分。二维数组呢,可以被看成一种特殊的一维数组,它的元素呢,又是一个一维数组,比如说float a三四,可以把a看作一个一维数组,它有三个元素a0a1a2。每个元素呢,又包含了四个元素的一维数组a0呢,又包含了a零零a零零一a零二a零三a1呢,又包含了后面的元素a2呢,又包含了后面的元素,

那么这二维数组呢,可以看作是这样一个。其他的这样一个类型的部分。在C语言中呢,二维数组中的元素呢,是按照行进行存放的,那比如说先存放a零零,再存放a零一,再存放a零二,再存放a零三。那么,再存放a一零,再存放a一一,再存放a一二,再存放a一三,

那么存啊,它的元素排列的顺序呢?是按照行来进行存放的,那么进行按行的顺序来进行存放。用矩阵形式来表示,二维数组是逻辑上的概念,能形象的表示出行列关系,而在内存中呢,各元素是连续存放的,不是二维的,而是一个线性的。好吧,我们再看一下多维数组,比如说。float a二三四定义三维数组,

还有二页三行四列多维数组元素呢,在内存中的排列顺序呢,是第一位的下标变化最慢,最右边的下标变化最快,那么这是比如说我们这样一个。一个数组了,它的这样一个排列的这样一个顺序。我们来看一下如何引用二维数组元素,我们引用的方式呢?是用数组名加一个方括号写上下标,再加一个方括号写上下标。下标呢,可以是整型常量,或者说整型表达式数组元素呢,可以出现在表达式中,

也可以被赋值,比如说。a一二=a二三÷2。在引用数组元素时啊,下标值应在已定义的数组大小范围内,比如说inta三四。这是第一个整型数组数字名是a,它有三行四列,比如说。它的这样一个元,这样一个数组,那么定义了三×4的数组元素,那么我们再把它进行一个赋值a三四=3,那么不存在了a这样是是不正确的。不存在a三四这样一个元素,

数数组a1呢,可用的行下标呢是零到二列,下标呢,可用的范围是零到三。我们要区分定义数组元素使用的a三四和引用元素时a三四的区别,前面一个a三四定义数组时用的a三四呢?用来定义数组的维数和个位的大小。后面的a三四中的三四呢,就是引用数组元素时的a三四呢,是我们数组元素的下标值。a三四代表行序序号为三列,序号为四的元素。那么,这是我们的引用二维数组元素的这样一个部分。那么,

我们再看一下。二维数组的初始化,那么我们可以呢?用二维用初始化列表呢?对二维数组进行初始化,比如说。分行给二维,数组赋初值,那么比如说inta三四,那么等于一个大括号,大括号里面呢?有三个大括号。有三对大括号,每对呢,分别是a一二三一二三四五六七八九十十一十二,

那么我们可以了分行给二维数组赋值。那么也可以呢,将所有的数组呢数据呢,写在一个花括号内,按数组元素在内存中的排列顺序呢,这个元素赋值,比如说a三四那么写上一个等于一个大括号内呢,写上这样一个12个数的,这样一个部分。那么也可以呢,对部分元素赋值,比如说inta三四等于大括号里面第一个大括号是一,第二个第二对大括号是五,第三个对大括号是九,那么就是对。

那么我们知道。第一。第一行。那么。那么就是对a1a0。零负1a0a二零a一零负5a二零负九那么就是。对这样一个每一行,每一个,每一维的,每一行的这样一个数,这样一个元,这些元素呢,它的开始,它的这样一个每一行开始,这个元素呢,

进行赋值的这样一个部分。然后也可以呢,把它写成a也可以呢,进行a三四等于一零六零零。11那么,这样一个负值,那么也是呢,对每行呢,进行负值,那么也可以呢,对我们的inta三四=1。大括号一,大括号五六,那么这样一个负值,那么是对它的这样一个每行呢?

进行一个负值,那么也可以呢?对我们。数组的元素呢?进行这样一个赋值,比如说int一三四=1大括号,一大括号这样一个没有这样一个数值,以及呢,大括号九那么这样的表示呢,我们对。第二个第二行元素了,那么就。将它的游戏,将它的不进行,这样一个不进行,

这样一个。另外的赋赋值的赋值的这样一个部分,那么由系统那么赋予零值。那么,这样一个方式,如果呢,对全部元素都赋初值,那么就是对全部初始数据都进行提供,那么定义数组元素时,对第一位的长度呢,可以不指定。但第二位的长度不能省略,比如说inta三四等于后面的这样一个赋值的部分。可以写成inta方括号四方括号四后面的这样一些部分。就对对全部元素赋初值了第一位的长度,

可以不指定,但二第二位的长度呢,不能省略在定义时呢,也可以对部分元素赋初值而省略第一位的长度,但应该分行赋初值。比如说inta方括号,方括号四。大括号第一个大括号呢是零零三,然后第二个大括号没有赋值,第三个大括号呢是零一零十,那么这样那么这样呢,进行赋值的这样一个方式。


页: [1]
查看完整版本: 11.第11节课第六章利用数组处理批量数据