00:00
大家好,我们来看一个二维数组的应用案例,那么这个应用案例呢,就会用到二维数组了,大家看。现在要求定义一个二维数组。用于保存三个班。每个班五名学生的成绩,也就是说你有三个班级,每个班呢?假定我们有五个学生。这个肯定会用到二位数组,对不对,因为你一个一位数组已经搞不定了。因为因为你想一想,三个班,每个班有五个学生,这自然就是二位数组,你一位数组没办法区分是哪个班的了,因此肯定是二位数组来完成,他要求求出每个班的平均分,以及所有班级的平均分,那么这个地方他这个书的这个图图来看呢,应该是动态的给每个班每个学生成绩复制,就是循环的从控制台来进行这个书啊,给他给他输入成绩,那现在呢,我们就来完成这个案例,好吧,我们一起来完成这个案例。
01:02
那么二维数组的应用案例,我们来一起完成。做代码。我把它罗列到这里来,这是我们的二维数组。他的具体的要求对吧,提。题目就是。呃,要求如下。要求如下。我们把它整理一下。对。整理一下,当然这个要求如下,过后呢,我们现在呢,走一下代码。我们看看别人具体的要求,刚才老师已经说了啊,就是要保存三个班,每个班五个学生成绩,并且呢,求出每个班的平均平均分,以及所有班级的平均分,大家想想这个怎么做?好,老规矩,来,我们写一段代码来完成它,还是CHAPTER08。当然,我们写一个exercise。Exercise,然后呢,我们新建一个文件叫main,点构。
02:02
好,同样道理,我们从这边拿出一个结构。找到这个Excel上哪去了,刚才放这了。对吧。好,我把题的要求先给同学们放过来,题目的要求放过来,大家看一下。题目的要求呢,它是非常明确的,要定义二位数已经都已经告诉你了,来吧,第一步我们定义一个二维数组。没问题吧,这个对我们来说没有难度,所以说呢,我就直接定义了SCS,用来存放成绩二位数组,他说啊,要存放三个班,每个班五名学生,大家想一想应该怎么写,是不是首先要三个一位数组,每个一位数组里面有几个元素,五个元素对吧?第一个三代表我有三个一位数组,第二个三代表每一个异位数组里面有五个元素,也就说五个乘积,然后呢,我们用FLOAT60。
03:00
好吧,这个没问题,好写完了,然后第二步呢,我们就循环的输入成绩。循环的输入成绩。这个也没毛病吧,就是被每个班的学生循环的输入成绩。那么我怎么来循环输入呢?那肯定就要便利了,相当于I。默认零,然后I小于多少呢?好,那我们算出scores它的大小。然后哀家家。I加加完了过后再去进行二次变利,再去对一位数进行遍利,因为我要给每个呃成绩都要,每个学生都要输成绩嘛,高小于N,高是SCCH里面的I,前面是不是已经讲过这个方式了,高加加。写完了,写完过后呢,我们提示一句话。打印一句话说,请输入。干脆格式化一下。
04:01
好吧,请输入D。这个班。这个班。的第几个学生呢?这个学生。这第几个学生?的成绩。好,那么输完了之后,我们来一个换行符好不好,那第一个第一个这个D是不是就是I啊,但是I呢,咱们应该是加下一,这个我不解释了,因为他的下标是从零开始的,但我们不能说第零个班吧,所以加个一高应该是代表第几个学生,好说完了过后呢,我们就接收一下看。FLN就行了,那怎么吸收到这个学生的成绩呢?好,来一个地址服务对吧,传个地址,然后CS cos第几个学生?Goy,写完了,好,当我把整个这个做完以后,当我把整个做完以后,其实所有学生的成绩就已经计算出来了,是这意思吧,好,同学们可以把它打印出来看一下。
05:04
我们先把第一步给大家做一个演示,诶。成绩写完了。好,我们来跑一跑,看看这个代码能不能把所有学生的成绩给统计,呃,那个输入进去CD。点点到上一级,然后CD到我们这个exercise对不对,然后go run main.go跑起来。我们可以看到它会提示我,请输入第一个班第一个学生成绩,比如说是咱们来个1.1吧。第二那就那就快速写一下。好一点,一我的第二个班的,大家看到没有,第二个班的第一个学生,我就快速写一写。好看,是第三个班的第一个学生的成绩了啊。4444最后一个好,我们可以看到,当我这输入完毕以后呢,同学们可以看到,这是第一个班五个学生成绩,这是第二个班级的五个学生的成绩,这是第三个班五个学生的成绩,没有错吧?好没有错的话呢,我们下一步接着玩。
06:10
这个我就注销了,人家说的是要求出每个班的平均分,没问题,我开始来玩一把。那我开始便利了,同学们,我开始便利了。好便利。便利这个输入。乘积后。这个二维数组。二位数组。统计统计平均分。平均分。平均分好,那这个时候便利是不是跟刚才是一样的呀,是不是把这个三题拷贝下来是不是一样的,只是这里面呢,要。重新来处理一下,重新来处理一下,首先他要统计每个班级的平均分,那你要知道每个班的平均分,首先你要知道每个班级的总分,那我怎么知道总分呢?简单,我在这一行来定一个上。
07:07
这个没问题吧,我给他一个0.0。就是说因为大家都知道,在进行这个内存for循环的时候,其实就是便利每个班级的成绩了,所以说我在这定义一个变量。定义一个变量,用于用于累积,用于累积什么呀,各位,用于累积各个班级的各个班级的总分,这个没毛病吧。我把它总分给他累积出来,好,怎么累积非常简单。加等于就行了,那等于什么呢?A scs SCI勾。是不是这是这个班级的总分就统计出来,统计出来过后,是不是我们就可以把这个班的总分给打印出来了呀。是不是,那么我们写一下。走一个。好,我们就其实这个班级的这个班级的这个,嗯,总分和他的平均分我们都可以拿到了,我写一句话啊,这是第。
08:09
这个班。班级的班级的总分。为多少,先输出一下,就按原子输出。V吗?这么多平均分呢,平均分。平均分是不是也也可以出来了呀,也输出来好,那么输完过后呢,我们来换一行,注意听这个总分是不是就上。没问题吧?平均分,同学们想平均分是不是这个sum来除以。五啊,但是除以五呢不好,因为你每个班级的这个总人数,你写死了不太好,所以说我们通过这个N来计算这个班级的班级的总人数,是不是这样写是最合理的,怎么写就是。Scars。I因为这个SCI就是代表当前这个班级嘛,是不是当前这个班级就是这这个这个这个班级有几个学生嘛,能统计出来保存一下,看有没有代码错误。
09:11
好,我们可以看到这里面出了一个问题。无效的,他说不匹配,不匹配的原因是不是又是老规矩,因为你这是什么类型?你这是一个FLOAT64类型,而你这里面是个什么类型,是一个int类型,因此不匹配怎么办?是不是讲过FLOAT64?转一下就可以了。没问题吧,前面我们讲过go让它在运算的时候有这么一个需要大家进行一个强制转换的问题,因为它不会默认的进行进行隐私转换,因此要强制转换好了,这做完了过后呢,实际上每个班的这个总分。每个班级的总分和平均分,咱们就已经做完了。但是人家还有个要求,他说你还要求所有班级的平均分,哎,各位同学,你要求所有班级的平均分,是不是就要把每一次。
10:03
这个sum目给它累积出来呀,是不是这个道理,所以说我们再定义一个变量,比如说我把它定义到外面,你你就不能不能定义到里面了,定义到里面它就会给你每一次循环的时候,就把这个值重新给你赋赋值了,因此在这呢,我们定义一个变量叫T上,这个没毛病,等于零。那这个这个我怎么做呢?这个就是用于就说定义一个变量,用于累积所有班级的,不是各个班呢,是所有班级的总分,这个没毛病吧,那怎么样累积,因为你这便利完了过后,我就赶紧把它给我加起来。哎,你看。我们每一次。For循环了一个班级过后,我把这个总这个班级的总分给他累积到to。这个项目里面去,那就意味着当整个这个两双层复循环完毕过后,To项目呢,就是所有班级的总分了,对不对,那等到整个出来以后,我们再来统计一下不就完了吗?说明所有班级的总分是多少?
11:12
还有他的平均分是多少,我们就可以拿到了。这样写所有班级。所有班级。的总分为这么多平均分。我写上啊,所有。所有班级的平均分有多少,那这个地方就应该改成什么呀,改成to上。对不对,这个也改成团上,但是呢,因为你这个地方呃是每个班级的,就是这个班各个班级的人数,所以说这个地方我们就没有办法了,只能把各个班的总人数直接写到这了,因为我们有15个学生,我就直接写了啊。因为那如果说你们你们觉得这个麻烦的话,也可以用各个班级,呃,每个班的人数去加起来也可以,那你那你可以再定一个变量,说老师我再定一个变量,把各个班级的总人数统计出来,再写到这也可以,我这就偷了一个栏,直接除以个15,因为我知道有15个学生,好吧,好,写完了过后呢,我们这儿基本上就完事了,还有一个小技巧。
12:15
就是如果我们这一行越来越长怎么办呢?可以换行处理,换行的时候要在上面留一个逗号,能理解吧,你这样换行没有错。你理解吗?这样换行看起来也比较舒服一点,好保存,看代码没有报错。也就是上面要保留一个逗号啊,你果没有逗号,你你如果是这样这样隔断,那那才要报错的啊,对形,比如你把这个逗号拿到下面去,你看这个语法它就报错了。他汇报错,看到没有,他说语法错误,也就是说你要进行这一个换行的话,你得把上面这个逗号保留。能理解了吗?好,同学们,代码我们就全部写完了,那我们来跑一跑,看看这个代码能否正常运行。来吧,跑一个。
13:01
跑起来。我这块为了简单一点,我就直接输123这样子啊,11111好。这个时候。诶,为什么他没输出来呢。便利哦哦对,我还没把把这个成绩全部输完啊,还没把它输完,第二个班所有的学生我全部都是两分。好吧,两分,第三个班全部为三分。好,最后一个。好打印出来了,嗯,这个地方为什么啊,他说。呃,这地方是为什么看看。Print f。呃,这地方输出的内容跟我们想的有点不一样,对不对。班级总分为一分,这个肯定是不对的。平均分。第几个班级这块输出有误对吧?这块输出有误,我们看是什么问题,总分哦,我知道为什么了,大家看啊,我们这样输肯定是有问题的,少了一个。
14:04
百分号,我们把这个重新整理一下,这是第几个班呢?这是第加一个班。这样写才对,不然的话你对不上。诶,等一下啊。I加一。I加一,这个不着急,这个I加一对应这个D,总分为上,这就没错了,平均分算出来也可以,好再来跑一下。这这下应该没没没问题了吧。一个两个三个,一个两个三个可以了。对吧。可以了,好,我们再来跑一跑。再来跑一跑,走。找一个。好,快速的走一下,11111好2222。二最后最后一个全部为三分。再来一次,写完了,好,同学们看,这次呢,就应该是正确的了,我们看结果,他说第一个班的总分为五分,因为我五个学生每个都是一分嘛,平均分一分对准。
15:05
十分平均为两分,15分平均为三分,总分为30分,平均为两分,正确。好吧,好,同学们,那关于我们这一个二维数组的一个练习题呢,就给大家介绍到这里,我们把它板述一下,在这个基础上同学们可以去,呃,我在后面布置一些作业,同学们可以在这个二维数组基础上加强一个练习,好代码呢,我给大家。处理一下。从这里开始截取。好吧。就是我们的一个应用案例。26。26。放一下。没问题吧,紧接着我们继续处理。27。27。那27行接着往下走。27~39。截取完毕。好同学们,那关于这个二位数组的这这个应用实例呢,就给大家介绍这里,那到此呢,我们二位数组包括呃,排序和查找,我们这个内容就说到这里了。
16:10
OK,后面呢,我们会布置一些练习题,在这个练习题的基础上呢,大家可以进一步的对我们的排序查找和二维数组加深它的认识。
我来说两句