00:00
各位同学,我们为了加强大家对于数组的一个理解呢,我们来做两道题,用数组来完成第一个题,我们看一下第一个题呢是创建一个差类型的26个元素的数值,数组分别放置大A到大Z,然后用for循环呢访问所有的元素。但当然大家知道哈,因为你有26个元素,所以说这个时候呢,我们不要一个一个去放,我们用一个负循环来完成,这里有个提示,大家知道字符数据呢,它是可以通过加一来完成的,对不对?比如说我有一个A,我知道有一个A字符了,我想得到这个B字符,怎么拿到呢?加一就可以了,所以说我们用循环就能解决这个事情,那同学们,我们一起来完成这道题。并不难哈,来,我把这个呢先注销一下,我们来写一个关于数独的练习,跟上老师思路。我取个名字叫A。
01:00
Exer c01,好,这是练习吧,咱们先放这。然后呢,我把这个后缀名改一下,跟上老师思路好不好。跟上老师思路,那这里呢,我写一个include。Include stdl。对不对,然后呢,写个void。VO的,诶,别别乱跑啊,VO的主函数。然后我把需求先给同学们放过来。把需求给同学们拿过来。那么这个需求呢?呃,它是要求我们放26个字,呃,元素到数组里面,那我就开始写了,这个就没有什么太多思路分析,直接往里面扔就行了,好不好?比如说叫做char,叫做数组。有26个字母。好,先放到这儿,然后呢,我们用for循环来给它进行一个初始化,当然我这里面为了初始化呢,我需要定义一个变量int I对不对,I等于零,I小于多少呢?对,I小于26。
02:06
当然你也可以用我们前面统计这个数组的大小来完成,我这就直接写个26爱加加。爱加加,那我现在就可以往里面放东西了,怎么放呢?瑞,大家看清楚了,2I。对,那么I等于什么呢?各位同学,我这样写,等于大写的A加I。大家看能理解吗?因为你第一次这个是第一个是A嘛,那A加零是不是还是A,第二个是不是A加一就变成B了,好这样就完成了,然后我们来输出就可以了,输出非常的简单哈,我们for循环再来从I开始来输出,I等于零对I小于26。哎,加加。哀佳佳。然后呢,我们这样去输出就是print。打印出来,比如说就是二。
03:02
我们的下标摆放D值。摆C,用字符来输出,那为了好看呢,打个空格I,然后这边是RI就可以了。待会就写完了,好,非常简单,为了好看,我们开始掐一下,那各位同学我们运行一下。我们运行一下,看看这个效果是否OK。来共同学我们运行。点这个小箭头。跑起来,看看能否输出大写的A到大写的Z。好,同学们可以看到,完全没问题哈。Abcd,那这样因为太长了,我们可以把这个去掉。这样大家一看就更加清晰。走起来。必。这时呢,我们可以看到A到大写,A到大写的Z一目了然啊,诶这个有问题。这个地方是因为我这把这个I没有去掉。再来,因为你前面第一个对齐的I,那就麻烦了,对吧,那就不对了。
04:02
看A到大写的Z完事,第二题我们就做完了第二题,第二题呢,他说求出一个数组最大的值,那这个呢,我们再来玩一把,我先把上面这个注销了。下面这个题的要求,拿过来看一看。他说求出一个数组的最大值,这个呢稍微有点麻烦,所以说老师要分析一下这个思路。我第一步肯定是先定义,我先定义一个数组。啊,比如求数组,呃,大小,咱咱们试一下啊,大小为五吧。好,第二个呢,我们怎么来求这个数组的最大值呢?肯定要变利,我这我的思路这样子的假定,注意听啊,假定我们的第一个元素就是R。二瑞林。就是最大值。最大值下标啊,这个就是最大值,然后呢,然后我们依次依次和数组,和这个数组,数组后面的数进行比较。
05:11
进行比较,如果如果发现,如果发现比比什么呢?比如说我们。我们认为假定它是一个最大值,那我用一个变量来接收。啊,这样子,如果我们发现什么呢?有有比这个max更大的数。更大。更A更更大的数。干什么呢就干什么,就相应的变化。相应的变化。对,最后呢,最后当当我们遍历完后,遍历完整个数组后,遍历完整个数组。就得到了,那么变量完整个速度max就是最大的数了,能理解这个意思吧?
06:02
就是说我假定第一个就最大,然后再我再开始遍历,跟后面数进行一个一个比较,如果发现有比max更大的数呢,就。就相应的变化,也就是说把这个最大的数付给这个max,什么叫相应变化呢?就是把。把把这个更大的数,更大的数付给。付给谁呢?付给这个max,当我们遍历完整个数组过后,Max就就是最大数了,这个能理解吗?好,我写代码就行了,大家一看就行了啊。我这次呢,直接这样写,比如说有有五个数零负一,89,然后呢99,然后来一个四。但这里面最大数肯定是99了,可是你不能说就是99,因为程序并不知道有99,所以说你要开始按刚才老师思路来走,首先我定一个最大,我假定一个最大值,比如说二零。就最大值。对对,那现在呢,我开始比较for循环,那么这边我们应该有一个I。
07:05
是不是有个I呀,I那么I呢,大家知道。哎,我们现在,呃,初始化为几比较合适呢?写零不合适了,因为你这个你本身这个max就是零,你在自己跟自己比较没有意义,所以说这样写个一就可以了,I小于多少呢?I小于这个数组的大小,那这个数组大小我们可以把它算一下。对,我们可以算一下,等于size of,我们讲过这个东西了哈,那么包起来除以size of。什么玩意呢,Int拿到,然后这边呢,我们用这个好这样子就可以了,然后I加加。爱加加就从后面比较。大家看我的思路,大家看到是不是如果我们发现有更大的,我们就相应的变化这句话,这句话如果翻译成我们的代码,应该怎么翻译呢,同学们。
08:01
是不是应该一个if依据。如果我们发现R。有这个I,它大于了max。诶,大于max说明什么?说明你假定的这个max并不是最大值,那怎么办呢?变化把这个最大值重新付给他就可以了,好同学们,当我们整个这个for循环结束以后,Max就是最大值,是不是这样子的呢?我们输出BF。跑一个啊,Max。Max带鱼白袍地。对,因为我是整数嘛,我完全可以用输出。那么为了好看哈,为了好看,我们get下。代码写完我们运行一下,如果这个结果它就是99,说明我们这个是OK的。我们运行出来这个结果,看看max是多少呢?我们看到max就是99说老师我们再多整几个呗,可以,比如说我再整一个零,再整一个23,再整一个这么多,再等一个这么多,诶再等一个三。
09:06
456啊,其实这个地方最大值应该是9876,是不是你运行仍然是9876。对,这就是好处,因为我们这个大小呢,是动态计算的,是不是看9876算出来,那但是呢,跟我们需求有一点区别,人家要求是什么,得到对应的下标。那你那你只是得到了最大值,你没有得到对应下标啊,最这个对应的下标是不是就是I啊同学们。是不是就是I,所以说。所以说呢,你你这个地方来做一个变量就行了,比如说我们写个max的。Int这个这个下标初始化为零,然后呢,他每替换一次,你把这个max下标呢,也改成I就可以了,这个大家能跟上我的思路吗?就是说这个max我假定你,因为你原先假定零是最大的嘛,那max下标呢,Index索引的意思就下标的意思就是零,但是当你这个最大值在变化成RRA的时候,我的最大的下标我们也相应的变化就完了。
10:12
那大家可以看到我在这输出一下max index等于百分号D,也给各位同学输出来max index,那应该是几呢?我们数一下哈,我们数一下。这是012345678,那就应该是八。如果是八,说明我们这个就是正确的,是不是同学们。运行一下。我们可以看到就是八正确。也就是说我们这个9876在一个数组里面,它对应的下标就是八,完全的OK。好,各位同学,那么关于数组的应用的两个题我们就讲解完毕了,给大家板述一下。讲这个题的主要的作用就是让大家能够对我们的数组有一个呃,更加深入的理解好不好?
11:00
这些题都不算很难。来,走起来,我把代码给他写过来,好吧,这个题的解答方案。在哪里呢?就在上边儿。是不是从这开始的呀,从这到这边,我们把代码给它放过来。从这里到这里对不对。好,给大家放一个小表格进去,非常简单啊,Void主函数,然后呢,把代码扔进去就可以了。这是第一个题的解答,第二个题的解答。第二个题的解答呢,其实就是从这里开始的。直接到最后是不是同学们?那么我把这个代码呢,也给朋友们板书到这边来就可以了,非常简单,VO主函数。跑起来,往这儿扔一下。好,各位同学,那关于我们数组应用的两个经典的练习题就给大家评价到这里,呃,如果有哪些地方不明白的,自己再写写代码,加强一个理解,好的好,给大家说到这。
我来说两句