00:00
我们来看一下本章的几个课后练习题。加深一下对前面讲的知识点的一个理解,好同学们首先看第一个题,他说定义一个变量,保存秒数,然后呢,打印出对这个秒数对应的是几个小时,几个多少分钟和多少秒,那我们把这个题做一做,这个题其实挺简单哈,其实就用我们的曲模还有除法就可以搞定,打开这里我们新建一个文件。在这里新建一个文件,叫Excel练习。CE。Xer r。C,好的。那这个练习我们就就就取这个名字哈,接着往下走。那现在呢,我们把这个后缀给修改把。打开。我们include include。Include ST dl。
01:00
然后呢,写上我们这一个。Void void。Main函数。然后呢,我在这把这个需求拉过来,那根据我们这个地方,我们走一个思路,非其实非常清晰,首先呢,我们定义一个变量,定义变量保存。保存什么呀,保存这个秒数,但是这个秒数到底是什么,是多少,这个根据你的需求来走,比如说我们叫second。Second,第二个呢,是不是我们有有小时还有分还有秒啊,然后我们在定义变量表,保存我们的这一个什么呢?小时。那这个变量呢,我们取个名字叫r ho,没问题吧,第三一个同学们看我们再定义变量,保存什么呢?OK,保存我们的分钟。是不是要保存分钟啊,把积水分钟分钟呢,我们用mini。迷。Mini。
02:01
然后呢,我们再来看第四一个。第四一个呢,我们用这个秒定义,定义一个变量,保存剩余的秒数,对剩余的不够的啊,就是不够一分钟的剩余秒数。秒述,那剩余的描述呢?怎么叫left left second e?好,这个就写完了,那现在我们玩一把int,我们先把这个拿过来。对,拿过来,比如说我们一共有多少秒呢?我就随便瞎写一个哈,这么多秒。那现在我们看这个秒,它和多少个小时,多少分钟,多少秒呢?来,我们写上这里INT2。大家想一想。我们这个秒数和多少个小时,是不是直接除以3600就可以了。因为这里面大家要知道,一个小时有3600秒。是不是我除以3600,那整数部分就是我的小时数,能理解吗?再来看第二个我们的mini。
03:07
Miu啊,就就写个命令简写就行了,然后这边呢,是仍然是个秒数,那怎么得到它的分钟呢?大家看我们这样使是不是就可以模3600,各位用这个秒数模上3600。是不是不够,是不是不够一个小时剩下的秒数,然后呢,我再去除以60,能理解不?这个就应该是分钟了。是分钟,最后是不是还要求出next second next second呢?可以怎么做呢?诶,Life second其实挺简单,就用这个second,我们总的描述磨60就可以了,是不是这样挺简单的,因为你不够一分钟,你不够一分钟就是磨磨60嘛。
04:03
魔魔魔60就是你剩余的秒数嘛,是不是好的,那我把这个输出给大家看一下就可以了。来走一个百分号D这么多秒和和多少呢?好这么多小时,那写写过来就行了,我就。我就不再整了哈,和这么多个小时发地。表D,这么多个分钟,这么多个秒,然后这边呢,咱们直接把这个扔进去就够了,Second。第一个第二个二。放进去。第三个mini。分钟最后一个last second。最后呢,我们把这个界面停在这里,Get char。同学们,我们运行一下就可以了啊,非常的简单,运行起来代码就写完了。那运行起来,我们看一下它和多少呢。对,那就说这个呢,一共和248个小时,29分钟27秒,好,答案就是这样子的。
05:05
那接着呢,我们来看第二个题,第二个题呢,说实现对三个整数的一个排列输出来,同学们,我们仍然写在这个位置好不好,咱们就写在一起了,咱就不再新开了,好吧,那为了跟上面这个不冲突,怎么办呢?我是不是先注销一下,能理解我的意思,不先注销一下。那他说对三个整数进行排序,要求从小到大排序,其实呢,这个可以用冒泡法,可以用冒泡。但是诶小点冒泡。但是呢,因为我们还没有学冒泡,所以说这块呢,我们先暂时的用一个最原始的方法来写好,我先写一个in对一,比如说这个是来写个十吧。按二。比如说咱们写个八。再来一个N3。等于五。好大线,我现在的,我现在要把这N1N2N3呢,按照从小到大的顺序输出。
06:02
我怎么知道谁大谁小呢?我怎么学大学小呢?所以说我的思路是这样子的,同学们看我的思路如下,先把思路分析,第一步呢。我们把注意听把最小的,我们这样子啊,把最小从这样子从小到大。从小到大。将值保存到保存到N1。N2和N3。明白我的意思吧,就是说将来这个N1呢,就是最小的,N2就是第二小,N3是呃,N1是最小的,然后呢,N3N3就最大的。中间这个是什么就是什么,那现在我的思路怎么样呢?我这样听我说啊,我的思路这样子的思路就是先让N1和N2比,先让N1和N2比较。啊,如果N1大于。
07:00
N2,则交换。做交换。这个大家看明白什么意思吧,就说N1如果比N2大呢,把N1往呃,把这个大的值往后面挪第二步,然后N2。N2和N3比较。看我的意思,N2和N3比较。那如果说如果说N2比N3大,则交换。如果N2比N3大做交换,那我问大家,经过第二步和第三步,是不是我们N3就最大值?最后还有一个流程,因为N1和N2现在谁大谁小不知道,再让N1和N2再比较一次。再让N1和N2比较一次,如果N1比N2大,再交换,因为你交换完了过后,这一步交换完了过后,你不敢保证N1还大于N2哦,或者不敢保证N1小于N2。对不对,它是这样一个流程,那我们玩一把试一试吧,好,现在我们先做第一个动作,如果先完成第一步,好完成这个流程,跟上我的思路就就行了,这个一点都不难,如果锻炼大家一个呃,思维能力哈,N1大于N2。
08:16
那么现在我们就交换,交换的时候呢,我们需要定一个临时变量,其实前面我们用过哈,那么注意交换时我们定一个临时变量叫temp,初始化为零吧,这个temp呢,Temp是。是用于交换的临时变量,能理解吧?那现在我开始写了,Temp呢,就等于N1。好的N2啊,N1就保存到这里面去了,N1就等于N2,这个看得懂不,然后呢,N2呢,就等于temp。是不是就交换了,就先把N1保存到temp里面去,再把N2付给N1,那N1就变成N2了,再把temp呢给到N1交换了,这第一个就做完,紧接着呢,同学们看下一步。
09:06
是不是这个动作还要做一遍?这个动作再做一遍,那当然有同学说,老师你先输出一下这个效果,看一下,我们可以可以看看啊,我们可以输出一下。看看这个对不对,给大家看一下好,第一次处理后。那么这个时候呢,我们可以把N1和N2N3打出来,N1N2。好,N3,我们输出一下,看看交换了过后变成什么样子,N1 N2N3。好,不着急哈,那这边呢,我们为了好看,那后面应该有个get char。那如果说同学们看你,你最原始的时候是十八五,就是在没有没有处理之前,我们也输出。对吧,在没有处理之前,我们也输出一下。在这儿。在没有处理之前原始吧,我们就写原始的。原始的顺序。
10:00
叫最初顺序。是这样子的,第一次处理过后呢,它应该是怎么样呢?N1和N2交换了,因为N1大于。大于这个N2嘛,所以说我们运行一下看效果。大家看一看就明白了,诶,这个地方为什么报错呀。啊,对。呃,报错的原因我看看。好,他说这边对我们这个定义的这个值还得拿到上面去,是不是啊同学们。好,这个跟咱们以前规定好的,就是初始化的,必必须定义的,必须放在最上面。好,我们再来运行一下,我们再来运一下,看一下结果。此时此刻呢,我们可以看到最先前的顺序是,诶,这个没换行啊。我来一个换行,这边呢,咱也来一个换行好不好,咱也来换换行走起来。运行,那运行过后看这个结果一看就一目了然了,你看最先是十八五,现在第一次处理过后,十和N2交换了,后面是不是大家就明白什么意思,N2是不是要跟N3比一下。
11:08
因为你不知道N2N3哪个大嘛,所以说这个地方呢,我们要进行下次处理,其实就是把这个代码拿一下就行了,复制一份。复制一份,那这边改成N2,如果N2大于N3。那么交换,那这个面给变成二就可以二啊,那就是N2N3给N2,是不是再把这一个。对。呃,再把temp给N3,这是第二次处理。第二次处理完了过后,我们再来看一下效果。诶,这边是不是要关闭一下。打开运行,这是在锻锻炼大家的一个思维能力,跟上思路。到这个时候你会发现呢,第二次处理过后,这个十和五交换了,但是你交换完了后,这个N1和N2的顺序谁大谁小是不确定的,因为你这个N2是从后面过来的。
12:01
对,所以说你不敢保证N1仍然是小于N2的,不敢保证,所以说我们还有最后一次,对,还有最后一次,那最后一次呢,一样的道理了,就是这个的一个处理,是不是我把这个写到这边来。那这边处理呢,其实也是把这个代码拿过来用一下就可以了。改一下,其实这个就是把对这个,其实这边就是N1和N2之间的一个比较,当然这边呢,先把N1放过去。N1就等于把N2付给N1,然后这边呢,N2等于temp是这样子吧。好,这是我们第三次处理完毕,最后这一次处理过后呢,就能保证我们这个事有序的了,就是从小到大看是不是。那么看是不是五八十。那当然有同学说,老师我如果先前就是有序的会怎么样呢?如果是有序的话,它仍然是不会变的,因为我们是前面这个数大于它才交换,如果你前面数本身就小,它是不会交换的,明白吧,说这个题就做完了,后面我们肯定是有更好的解决方法的,因为这样写数很,如果这是三个数,还可以假设这是300个数。
13:17
这是三个整数没问题,如果是3000个整数,你这样写那那就完蛋了,对不对啊,所以说后面呢,我们会给同学们。会会给同学们讲冒泡法,冒泡法一上来就更加简单了。好,这是我们的这个题的评讲,下面呢,还有第三题,我们来走一下就行了,来看一下。这个我就不去运行,我们自己看啊,嗯,这里是X等于1X加加二是不是一个符合,符合加,那X等于几,X等于三。这边是Y减去一个三,Y本身12减一个三,Y等于多少?Y等于九没问题吧,然后这边肯定输出的就是就是一个X等于三,而Y呢,等于九没毛病吧,紧接着是X除等于X,其实这个就是X等于Y除以X,那你Y呢,是等于九的九除以三,那刚好除尽了,那Y就等于多少了呢?同学们,Y现在就等于三了,能理解不?
14:23
X还是三,所以这样处理完了过后呢,X等于三,而Y呢也等于三了,紧接着Y加加,诶Y加加现在是不是Y等于四了,因为它是独立使用的,然后呢,再用Y模X,那相当于是四摩,以四模上三求它的余数四模三,那显然Y就变一了,能理解不好,所以它在不停的变化了,那这个时候X呢没有变,X还是以前等于三,我Y呢就变成了一了,答案就这样子的写完了,大家看你只要按照这个推导出来就没问题。我们再来看下面的第四个题,第四个题呢也是,呃,让我们去锻炼一下。
15:05
对这个数的一个变化的一个理解,好,我们来看一下吧。来,走一走,我们一步一看哈,一步一步看A。这个当然等于等于等于九了,这个就没什么可说的好,这个A呢,就等于九,因为它是五加四嘛,B等于A乘以一个二,那这个很简单了。那乘以二不就18吗?对不对,那好好简单的,那么这边呢,C等于B除以四,注意是整数啊,它要取个整数,B是18 18呢,除以一个四应该等于多少呀,应该等于四点多少,四四点多少,那因为它是整数部分,所以说它保留一个整数,这就等于四了。接着往下走,前面这个数会影响后面的结果啊。B减去CB现在是18 C现在是C现在是四,说18减4D呢,就应该等于14,没问题。
16:03
紧接着再往下面走,E等于。E等E等于负D。哦,负DD本身是14,取一个负数,那显然E这个又变成负14了。好的,那么F等于E,模上式E,大家看这是负的14,呃,负14去模以模式,大家还知道这个公式是什么样子的吧?还记得这个公式吧,相当于说是负14。减去A就是负14除以四乘以一个四还记得不,那现在这个呢,这块我们一个替换一下就行了,负四负14除以四等于多少?是不是是不是三点多少,三点多少取一个整,那就是负三。那么这个变成负三以后,负三以后乘以四就是负12。
17:00
这个负12。那负12减去负12其实相当于加。加12,整个这个结果就应该等于负二,也就是说F呢,其实等于负二。是不是这样子的?接着继续来看I等于三,I等于三没有动它,那就I等于三了,I等于三,那么解等于I加,加。注意这个是后加加哟。也就是说它实际上是先把I给到节,自己再自增,所以说这个节呢,其实是等于三。等于三,但是I呢,因为自增了一次,所以说这个I其实现在已经变成了几了,一定要知道这个时候I其实变成了四了,因为你是真的吗?再来K。等于加加I,注意这个是相,相当于是干什么呀,相当于自己先自针。啊,相当于说先自己加一下再复值,那这样子的话呢,呃,它本身是四了,所以说加起来就变成五。
18:04
啊,然后把五呢给K,所以说K应该等于五。答案就这样子的,好,我我就不去测了,同学们自己按照这个流程来写一写就行了,最后再看第五一个题,老师也简单评价一下,N等于三,M等于四,走一个,同学们看。那么N小于M成立吗?N是三小于这个M。显然这是成立的,于是这个结果是一,因为非零为真嘛,再来看这个结果。他是加加恩。等不等于M,注意这个加加是先加,因此这个呃,N呢要自增再去比较。N本身是四,三自增了一下就变成四了。四等于四当然成立,所以这个结果呢,对不对也是。一没有问题,同学们接着再看下面这一个。那么这个时候呢,注意听哈,这个时候这个大家要反应过来,N现在等于多少,要要有印象,N现在等于四的。
19:06
N现在等于四这个地方要推出来,然后这边它又加加N大于M,这个夹角又在前面。那也相也就相当于说这个呢,N先自增,再去跟M进行一个比较,显然是加上一个一变成五,五大于40成立的,因此呢,还是一,但是这个时候N变成五了。好,最后这个结果N等于五。能理解吧,好,可以给大家试一下啊,给他试一下,我们看看跟老师分析的是否一样,这个我就不去试了啊,随便找一个找一个试就行,那同学们我们把这个代码呢,在这里给大家测一下。啊,就看看这个结果对不对就行哈。那怎么试呢?是上面这个东西太多了,我。呃。我在这儿。在这有个test,我在这儿测一下好不?
20:03
好,这边有个练习,我先把它整体注销一下。整体注销一个在这个test c里面,我们测一下就可以了,好吧,看一下结果对不对就行。好,这个代码呢,就这样子的,我们格式化一下,格式化呢,看看是不是等于1115就行,运行一下,同学们跑起来。看看结果是不是1115。运行完了之后,我们看到这个结果呢,诶跟我们想的一样,1115正确的,好,这个代码分析是没有问题的,好我把它注销。把注销,然后呢,把刚才这个练习练习打开就行了。好,这就是老师给大家讲的。关于这一个章节的什么呀,课后练习题我们梳理一下。课后练习这一下。高练习呢,我们一共讲了五道题,其实都不是很难,但是如果你不小心的话,有些地方还是要还是要出问题,对不对?基础一定要牢实。前面三个铁走一个。
21:01
下面三个题。好,给他来一个标号吧。给他来一个标号。呃,第一个题,我们先把答案给大家捋过来。第一个题的答案。第一个题的答案在是不是在这啊,在这我们把这个代码注销去掉一下。啊,不是从这注销,从这注销的。好,这是我们第一个题的答案,我跟同学们梳理到这。来写到这插入一个小表格,对,Void,我们就写个啊void。主函数把代码呢扔进去就可以了,这是我们第一个题,再看第二个题。第二个题呢,是对三个数进行一个排序,那这一部分代码呢,其实就在哪里呢?就在这儿,是不是从这开始往下收。收是不是到这结束啊,这部分是我们的第二个题的一个评价,同样我们写一个void主函数,然后呢,把刚才写的代码扔到这里面去就可以了,紧接着呢,我们还有第三个题。
22:07
第三个题,还有第四个题,我就干脆这样写好,第三个题的答案就是这样分析的,没有问题,好,同学们如果有兴趣的话,自己把这个代码跑一遍就可以了,这边答案都有。第四个题,第四个题是不是这个题啊,诶第四个题。第四个题,这是第四题,第四题就是是呃,看看运行的结果,看看看各个各个。各个数的结果。对不对,我把这个呢也给同学们拿过来。呃,下面呢,还有第五一个题,第五题,第五题呢,也是看运行的结果。啊,就是看运行的这个结果分析啊叫分析结果。那这个分析结果呢,实际上我们在这个分析过程中,其实说的比较明白,而且后面是不是我们测试了一下。
23:04
放这儿。好,这就是我们关于这一个章节后面的五个题的评讲,大家好好好的去领会一下,一定要多做题,同学们,你要学好编程,你不多做题是不行的。你想很顺利的把这个C语言考试考过去,也尽量多做一些题,咱们尽量学好一点,没准将来我们我们不要仅仅满足于过一个二级,因为将来同学们可能还会从事软件开发,如果你是计算机科班的,你将来还要学编程对不对?你可能还要去学大数据啊,Java e啊等等,那你有一个良好基础实际上是非常非常重要的。所以说我们讲课的这个这个深度,其实远远超过了一个二级考试的水平。好,这是同学们要去多多的打好一个良好的把这个基础打真结实一点,以后走的更远好。同学们关于这个题的评讲呢,我们就给大家聊到这里。
我来说两句