00:01
为了加强。对。二位数组的理解呢?我们再来看上三个案例。第一个案例。第一个案例呢,要求我们使用灵活的方式来便利如下的数组,第二个案例便利二位数组并得到和好。我们先来看第一个案例,好吧。什么叫做灵活的方式呢?就是它的行和列要统计出来,你不能写死了,对不对?我先给大家来做一个小案例,就是还是关于我们数组的练习。那我写一个。多维数组的练习。某。TY啊。的一个练习。Exer c01吧,这是我们第一个练习。那第一个练习呢?我们来给大家演示一把C。The include std。
01:00
呃,贸易的。主函数。贸易的主函数,然后呢,我们先把这个数组拿过来,我们现在要开始遍历它。便利,那便利的时候呢。因为我们希望灵活一点,所以所以说我第一步先得到,先得到行,就一共有多少行。那怎么来得到,一共有多少行呢?怎么来得到,就是我这个行数这个地方我怎么得到呢?我我不能直接写三号,那我要这么去写,大家看首先。首先呢,我们要这么去玩一把。我写,我先写一个函数,叫做Rose。它应该等于呢?等于size of。看清楚了,Map。除以sizes of,看清楚哈,那就是map。零。这句话我要给大家做一个简单的解释。那么卖30,嗯,我这说一下。
02:04
第一个这个是得到什么呢?得到整个map数组的大小。就说你整个map数组有多少个字节,那第二个呢?同学们看到这个size of map,零,它会得到什么呢?它会得到麦,就是这一行。啊,他会得到第一行map中第。第中第一行,第一行有多大?那我问大家,你统共说的再直接一点,这个就应该是几呢?说的再直接一点,这个就是九个字节啊,不是九个哈,应该是嗯,因因为是int嘛,那就是咱们有九个九个int乘以四,这个就应该是36,能理解不?那么这个应该是得到一行,一行有三个,一行有三个int,然后呢,乘以四等于12。
03:04
这个大家一下就明白了吧,因为你你整个这个map有有九个元素嘛,九乘以四是36个字节,那么这个零呢,因为这是一行数据,一行数据有三个int,三乘以12就这么难,那整个这个结果显然等于几啊等于三。这个大家能看出来吗?说老师我们试一下可以。来,Rose等于百分号D啊,我给他打一个就行了,后面我就不这么去啰嗦了啊,来,我们get差一下。该上了,我们预习吧。我们运行一下,看看此时此刻这个Rose到底等于多少,它应该等于三。他如果不出错啊,就应该等于三,如果我们分析没有毛病,就就是等于三的,我们运行起来,我发现确实等于三没有问题,好了,既然这个等于三,那下面是不是老师就再来得到什么样,再来得到一个行一个列就行了。得到列得到。
04:00
得到这个列有多少列,那列呢,也很简单,我叫columns,等于那一列是不是就是这里面有多,就说这一一行里面有多少个元素,是不是,那这个就更简单了,那么怎么写呢?诶,可不可以这样写,Set off除以size。Of so呢,Map?零。零零,为什么我写零零呢?因为我并不知道是特,当然你也可以这样写了,简单一点可以这样写。这样也可以,呃,为什么这样写就可以呢?大家看到前面我们讲了麦零呢,麦普零其实是12。那就是12去除以四等于三,就这么得到的,明白吧,哎,就这么得到的,那你这有三个元素,下面不都有三个吗?横都是三,因为你这有多少个元素就代表多少行吗?就是你你看嘛,你这你你这这一行行将来不是这样子一竖下来的吗?呃,是这样子吧,列列我说错了啊,列就你是001111113,那我只要得到这一行有多少个元素,那列当然就都得到了。好,有了这样一个数据过后,下面呢,老师就直接来遍历一下就可以了,好便利的代码,很简单,我直接拿来用一下哈,为了省点事,我们直接用个for循环就可以搞定。
05:19
来,大家看,往这往这放一下就行了。很简单,我就不写了啊,0ROSE I加加J0啊,那现在呢,就输出来了,那现在I,现在I和J我没定义,我写个I再写个J。代码就OK了。还有个A啊,现在这方应该改成map。是不是这个我就不要了好吗?那这个就是一个便利,好,这就是一个简单的便利,看清楚了。那这样编辑网络功能,我们现在诶。对,这个往这边挪一下,现在呢,我们就可以运行一下,看看是否能够得到这个。二位数组,好,那么我们运行一下。
06:00
二维数组现在就通过灵活的方式拿到了。运行起来,运行起来过后呢,我们看这个结果是否跟老师分析的一样。可以看到00111113,跟我们一样的哈,你这边给的也是一个,那它的好处是在于什么呢?将来我这边变化了,我下面代码不需要做任何变化,比如说我这变成了四行三列。市场上列,那我就根据这个地方来初始化就行了,比如说我是个十十十好,我下面不要做任何变化,我不要做任何变化,我运行起来效果能跟。原先是一样的。对,我们看一下这个输出结果,看是不是后面多了一行,对就完事了,好,我还要撤回去哈,为什么要撤回去呢?因为我前面写的这些注释都是跟333行三列对应的,第一个题咱们就讲完了,第二个题呢,更简单了,他说遍历二位数组得到这个和,我在这个基础上稍微改一下就行了好不好?呃,就说我不再去重写了,我就在这改一把,那要求和的话太easy了吗?我们再来整一个sum。
07:04
对上,那你在便利的时候,我们把这个和加进去就行了,Sum加等MY对不对,I结就可以了。代码就写完了,就这么一点点东西,就说你在取到一个元素的时候,把它累积到sum里面去,就累积到sum,那最后呢,我们可以把这个结果打印出来给他看一下F。来走一个吧,斜杠n sum等于百分号D打出上,那我们可以算一下现在是多少呢?因为我之前现在这这几个值比较简单,这是一,这是344加后面的五等于九啊,只要是九就可以了,运行之。我们看看sum是否等于九。如果不出问题的话,肯定是等于九了,诶这边有问题啊,我们来看看问题在什么地方看一下。啊,各位同学,看到问题是上午我没有初始化。是不是没有初始化就报错了呀,我们初始化一个零,否则的话就会出现程序的。
08:04
这个异常中断,我们以前讲过,这个事儿看上等于九,答案正确。好,这个题我们就讲完了,那么我们自己接着再来看一个题,他说定义一个二位数组,用于保存三个班,每个班有五个同学的成绩,并求出每个班的平均分以及所有班级的平均分。好,这个题呢,我们再写一个案例,我就不在这写了。因为这些题啊,本身都不难。就是把我们学的这个二维数组用一下,我们就叫students吧。Students的一个成绩,Score。好吧,我们就叫students。那现在呢,我同样把这个后缀名给他做一个小小的修改。对,然后这边呢,我们来一个include。STDIO,对,然后呢,VO的一个主函数。一个主函数,然后在这里呢,我们先把需求拿过来给大家使用一下。
09:04
需求就这样子的。好代码应该怎么做啊,思路很简单,就是我第一个三行五列的,然后给它数值就行了,我做一个简单分析。第一步,创建一个。啊,三行五列就是类似于这样一个东西,Students,比如说score吧,SC当然三行五列。然后呢,干什么呢?我们便利便利逐一赋值,给赋值赋值。复制完了过后呢,计算。啊,再次便利,你你这个便利的时候给赋值,然后再便利,再次便利,便利统计总分。总分和平均分就完了,最后输出啊输出好,因为这段代码呢非常简单,老师呢就不去写了,我给大家跑一下就行了,好不好,这没什么难度,特别简单。
10:00
但代码呢,还还稍微长一点,所以说我就不去啰嗦了,现在代码呢,我相信大部分同学都能看懂,我们简单的弄一点就行了,好吧,第一步呃,创建一个三五。啊,创建个三五,然后这边呢行三六,这个时候我我这写的是一个三五,我们可以按照原先这个方式来算一下,如果如果要算这个行行有多少行的话,是不是可以这样写啊,Size of。什么样呢,我们us。Score啊score,呃,然后呢,再去筛子,注意听行size。Of什么呀,就是ure,然后零就可以了。这个呢,就代表是行列呢,这个五咱们可以这样去统计,是不是以前也学过,刚刚学过size of,那么我们先把一行的这个大小拿到。然后再去除以一个什么呀,除以一个size of什么玩意儿呢?Double就可以了。
11:03
啊,这样更灵活啊,这边还有个埃及,现在我定义个总分,还有每个班的总分,好这个就后面有用,然后这边是在干什么呢?先第一次遍历。第一次变的时候呢,先给它附了个零零哦,其实这个地方负零零的原因是让它有个初始值。呃,让它初始化一下。因为你不初始化呢,后面赋值的时候有可能会有一个呃中断,好这边是在便利。啊便利,然后给每个每个学生干什么呢?输入成绩。是不是这样写的?Rose第第几个提示了一下。那么这拿到以后呢,就显示我输入成绩,最后再统计的,那么我先给大家看一下统计的时候是怎么统计呢。统计的时候也是便利,我先把注意看是不是,呃,我我有两个两个循环,循环一次呢,就把就把每这个是统计累积,累积每个班的平均,呃,总分啊总成绩。
12:08
大家能看懂吗?就这个石膏I杰是II这个班级的所有学生的总分,总分完了过后就把他的平均分求到了,然后把这个这个班级的总分呢再累积到这个to考里面去。这是将将该班。该班班级的总分的总分干什么呢?累积到这个变量中。对,那最后是不是我这个负循环结束以后,所有班的总成绩就得到了,然后在这个基础上呢,在Rose乘以呃,Cos这个是不是就是总分去除以所有学生的个数得到了平均分代码结束。其实并不难,对不对,因为这个没什么难度,所以说老师呢,直接给他讲一下,运行一下就可以了,来吧,各位朋友,我们运行一下,看效果是否OK,跑起来。
13:04
跑起来,我们看看效果怎么样哈。因为代码没有什么难度。三行五列。好,走,我们先输一个,第一个班的成绩,第一个学生的成绩,第二个成绩,我们简单一点好不好,都10.0。4.0。设立好第一个吗?然后呢,现在我们再输第二个班的成绩20.0。20.0。20.0。20.0。20.0,好,这就是我们第二个班的所有学生,输完了再输一个30.0。30.0。30.0。30.0,还有最后一个学生也是30.01回车,那么他就会把相应的这个情况我们说出来,我们看一下。这边是我们初始化过后这个三行五列的一个数组的情况,第一个班全是十,第二个班全是20,第三个班班全30,然后呢,第一个班的平均分就是这么多,第二个是20,第三个30,最后所有的学生总成绩一共是300分。
14:13
大家可以算一下,你加起来肯定300,因为你第一个班一共是50分嘛。第二个班是不是一百一一百分,第三个班是150分,那加起来刚好就300 300除以15。300分一共有15个学生,那平均下来就20分,代码就写完了,同学们有兴趣再把这个代码看一看好不好,没什么难度,这个这个比只要你只要你把这个破循环搞明白了,这个几乎没有任何难度,好各位同学,那么关于这一个我们二维数组的案例就给大家先说到这,我们呢给大家板述一下,这是应用案例。就是讲了。二维数组的应用案例写一下二维。二。二维数组的应用案例。
15:02
应用。二维数组的应用案例。那么二维数组的应用案例呢?我我给大家来整理整理好,就前面的两个题。案例一和案例二案例一。案例二,好,代码呢?我给大家整理到这里啊。前面。啊,这就写到一起了,前面两个案例的代码我给它整理到这好吗?诶放这那么代码呢,我们就直接从这里拿就行了。好,我拷贝一下。放到我们这块就OK了。没问题吧,同学们。那这个说完了,是不是我们紧接着又给大家举了一个案例,就是什么呢?我们需要定一个二位数组,然后呢,输呃,三个班的学生的成绩,然后统计他的总分和他的平均分,好这个呢,我们也写到这里来,对不对?好,那具体来说案例呢,我们就直接从这里拿了。
16:02
好,拷贝,然后复制到我们笔记中去,大家一目了然。各位,那关于我们二位数组的三个应用案例题就给大家讲到这儿,大家好好的理解一下,最好自己写一遍好不好?这讲我们就先给大家讲解到这里。
我来说两句