00:00
同学们,我们来看这这套题的最后几个填空,第九题看一下,第九题呢,我们看一下是呃这样一个题,我们一边写一边做分析哈,郭同学。分析。同学们看一下这道题呢,呃,它是这样子的,这道题它用法呢,比较奇特,对比较奇特,他说呀。嗯,他说我现在呢,有一个函数叫PRT,可以接收一个char,然后呢接收一个int,看到没有,然后呢,这边有个for循环,你传进去的这个N呢,就作为循环的一个次数,在这里面它用了一个三元运算符,看到没有,也就是说它在这里面用到一个三元运算符,这个是可以的。这里使用了一个三元三元运算法。大家写不出来三元。运算符,那也就是说,如果这个条件为真呢,诶,它就输出这个,呃,百分号C,如果不为真的话呢,它就输出百分号C,同时换行,看到没有,其实说白了这句话就是每六个换一行,每六个换一行,因此这边呢,呃,根据这个情况来说,如果我们调用这个东西哈,如果我们调用这个东西,那其实就是嗯,循环。
01:23
循环24次。24次。你你看这个题是不是24次嘛,因为你一到20次嘛,循环24次,然后呢,每。每六次,每六次干什么呢?换行。对对不对,那这样子大家想一想,他最后输出什么呀。他其实这个输出了四行,四行星号,所以说最后输出的就是四行。四行这个星星号,而且大家能能不能分析出来每一行每一行。
02:01
每一行有几个星呢?有六个星。六个星,也就是说它输出的形状应该是这样子的。456换行,诶怎么这么多。123456好,再换行。911。有123456好换换。然后123456,也就是说最后这段代码,如果你在主函数里面去调的话呢,它应该输出这么一个形状,同学们可以去试一下,肯定是这样子的,所以这最后这个呢,就是我这说的有四行信号。每行。每一行呢,每行有六个星。没问题的啊,肯定是这样子的。第六题评价完毕,第十题第十题这个题呢?我们来还是做分析看答案。同学们看这道题应该怎么玩啊哈,这道题其实挺简单的,X等于十,Y等于20 T等于零,然后大家看这道题呢,它主的主要的难度就是它写成一团了,它写在一行,它把多条语句写在一行,看你能不能断句,对它这个地方呢,考察是将。
03:13
它的考察点。考察点。呃,考察考察。考察点点是什么呢?就是当多行语句。当。当多行语句在一起,在一起。在一起能否断句啊?能否区分吧,就是你能否区分开来,我们看这句话呢,应该这样看,这是一个整体。看到没有,也就是说老师,红色的一个整体后面是两个单独的语句。那换言之就是如果X等于Y成立的话呢,就将这个T付给,把X付给T,显然X一个是十,一个是Y不成立,因此这个语句不会进来,那不会进来的话呢,它会把Y付给X。
04:06
把Y付给X,那显然嗯,这个时候X呢,就应该等于20了,因为你把Y付给X嘛,所以它会执行什么呢?他会执行后面这这句话。和哪句话呢?和Y等于T这句话,那这样就很简单了,那输出的结果大家可以看到肯定就是一个。呃,XY等于20嘛,付给X,那就是20 T是零,T付给了Y,那Y就变成零了,所以最后结果呢,应该是一个21个零。答案结束,第11题,第11题呢,那个题不知道上哪去了啊,咱们就不去管它了,看12题,12题他说在12 12这地方呢,填写一个正确的语句,使程序可以增强的编译和运行,我们看这面是一个什么样的情况来做分析。同学们首先看这里哈,看到定义WXY,这个没什么可说的,关键是这个能看出来是什么吗?
05:06
就是你们能能不能看出来这是个什么玩意儿。这是一个什么东西啊?能看出来是什么。注意,这是。啊,这是函数指针。或者说,或者说这是一个指针,它可以指向一个函数,即,即什么呢?即该指针,该指针指向函数。那有些同学老师这个你讲过没有,我是讲过的啊同学们,我们在我们在这一套原先就是给给你们说的,你们需要去看的这套高校大学生C语言课程里边,其实我专门讲过这个东西,在哪讲的呢?我们这一套一共讲了17章嘛,其中在讲指针这一章的时候呢,我专门讲解了函数指针,看这里。是不是这函数指针,那函数指针呢,就是指向函数的指针,具体具体的是怎么讲的,下面都有详细的案例,还有我们的视频对不对,那这里我就不再重复了好吗?那也就是说,也就是说大家至少你能够判断出来。
06:09
你必须要判断出来,这是一个P,是一个函数指针,它指向什么呢?它指向一个这样的函数,没有返,它是指向这样一个函数,就是返回一个double。返回一个double,然后呢,接收两个double的函数GP。P指向指向这样一个函数,什么函数呢?返回,返回类型类型返回类型为什么呀,Double OK,然后呢,它的行参,行参为两个,Double及行参的形式应该是这个样儿的,Double double OK啊好,所以说是这样一个概念,那大家想一想,你这样子明白了过后大家都知道了,你在这是不是掉这个avg了,这句话能理解什么意思吗?同学们。这句话其实就是。
07:02
就是将,就是让,就就是让这个P指向指向avg这个函数。那当然前提是avg呢,也是一个这样的类型的函数是吗?是的,你看它返回一个double,接收两个double是可以的,但是你有没有发现这里他使用这个avg的时候没有声明就使用了。所以说它是12号,应该干什么呢?要声明一下,即在12这个位置,12这个位置位置。位置需要声明,声明该函数avg函数即可,那也就是说你要把这句话同学们看啊,即把这句话看清楚了,把这句话呢,复制在12这个地方来,然后呢,诶这写错了,然后这边打一个分号,声明的时候打一个分号可以了。好,这样子就OK,明白了哈,给大家来一下,同学们可以去试一下,就是这样写的。
08:00
就这样写的好,那如果同学们有所怀疑呢?我们可以试一试,好吧,我们来试一下。那我在这儿写一个吧,把这个拿掉。把这个拿掉,Include显然是因为我们没有引入这个std嘛,他肯定不是在这的错误了,IO。看这样子代码就没有错了,如果你没有这句话啊,同学们看,如果说同学们没有没有这个声明,你把这个拿掉,他立马在这报错。你看这里保存一下,他会干什么呢?诶,这么好像也没报错是吗。不应该啊,我们来运行一下看看。运行一下啊,来跑一个。对,跑一下。好,肯定报错了,看avg未声明,看到没,Avg没声明,如果我们把这个摆回去看,现在告告诉avg没有声明吧,现在我再撤回去,再来运行。再来运行,你看这个时候呢,至少没报错了,对吧,至少没报错了,好在他等待你一个输入嘛,你输一个XY,它就把这个结果返回来了,好这是我们这道题的一个评讲,所以说这边应该加上这么一个东西,OK,四米第13题我们来看一下分析。
09:14
嗯,第30第13题呢,我们也来分析吧,他说这道题是什么一个题呢,这道题挺有意思的哈,他这样子的。嗯,首先我们看看这句话能必须理解哈,这句话能理解吗?就是主要是看这个N。N是一个数组,就是N呢,是一个int类型的数组。那数组呢?它只付给负了一个零,那么其他默认值的默认,其他的元素元素默认都都是什么呢?都是零了,也就是说这个N。N这个数组所有的元素都是零,这点必须看出来,因为如果你默认给了一个零,它其他全部都为零。然后这边它循环了几次啊,循环四次看懂没有循环四次呢,它这个地方要必须看懂,这句话的意思是什么?有这句话的意思就是说下一个元素的值等于上一个元素乘以二加一,这个能看出来就是就是N的。
10:16
NN这个数组,数组从什么时候呢?从这个N下边为一开始。开始开始,嗯,从这个下标为一开始,因为零这个呢,它已经没有没有没有去除了零就是零,就是N等于零的时候呢,就等于零,所以说呃,从N一开始呢,等于什么呢?等于它的前一个元素的值乘以二乘以二加一,好,这个就很好理解了,那就没问题了,只要明白这个就东西我们就可以推出来,大家看N,呃,从一到四,我们看一下,如果从一到四的话呢,呃,它的N1就是呃就是N1呢,它其实就应该等于N0。
11:04
N0这个值啊,乘以一个二啊,乘以二加一,那说白了,那你N0不就零吗?零乘相当于就是说是零乘以二再加一个一,那就等于一。所以说N1就这个地方就N1NN1就等于一了啊,那N2等于什么呀?同学们,N2是不是就等于这个值就是一,就是N1乘以一个二再加一,显然这个就应该我直接写了就等于等于三没问题吧,N3呢?N3又等于N2。对不对,N2乘以一个二再加一个一,那显然等于几啊,等于七了嘛,好,N4是不是又出来了呀,N4就等于N几呢?N3乘以一个二再加一个一,那显然就是七乘以二加等于15了,大家看那这样子说1234就应该1375,那么他在这里呢,每每计算出来过后,就把这个当前这个N对应的就是这个元素的输出来了,那显然就应该是1375,所以说这个地方应该填的是一三。
12:12
715。就正确了。13题就是这个答案啊,结果这边应该填的是1313715,好第14题,14题呢,我们也来做一个分析。各位同学跟上思路,呃,前面这个它省略了,肯定都这个不是错误啊,不可能说让你include出错,那这里面它是什么呢?说输出结果是什么。首先我们看这句话,这句话能理解是干什么的吗?这句话是干什么,你还记得吗?这个是动态。动态的分配,分配空间在哪里分配空间啊。动态的在堆。是不是在在堆中分配空间,空间的大小应该是这么大。对不对,大小。
13:00
大小为这么多,其实说白了就是20个字节。说在直接20个字节,为什么是20个字节呢?因为一个char是一个字节嘛,一乘以20,好,这个就分析到位,分析到位过后呢,拷贝,他把这个welcome啊拷贝到这里面去了,那也就是说这个地方你应该想象到这个P呢,它指向了就是这个P啊,不管怎么样,它指向了一个数组,这个数组里面呢,有这么一些一些东西写的是welcome w。Ec,当然后面呢,有个斜杠零的,这肯定的好,然后呢,做一个for循环,那做for循环的时候呢,注意它是从I等于六开始,它是逆序的,那么也就是说这个时候put char put恰是不是输出啊,新加IP加IP,呃,等于6P加六应该指向哪里了?是不是直接就指向这个E了呀?讲过没有啊,你原先最先指向指向这个地方吗?它一共有几个加六,就往后面数六个单位,123456刚好指到六了,指到这个E,然后呢,这这个地方它就输出嗯这个E,因为它用了星号取值符,所以它应该先输出一个E,然后呢,这个I减减,又让这个又指向这这个了。
14:19
M。好,然后再执行O。再指向C,再指向L,再指向再指向W,也就是说,说白了就是逆序打印。说白了你去最后呢,呃,最后大于零的时候,因为它嗯输出六次就结束了嘛,呃六大于等于零应该是七次哈,七次那就1234567正确,然后呢,F。正确,所以说这个呢,说白了就是力学打印,这句话的作用就是力学打印。就是逆序。继续输出P指向的字符数组。那说白了,这个结果当然就很很好理解了,这个结果就应该是。
15:02
EEMOCLEW。能理解吧,还是很简单的咯,前提就是同学们一定要把老师前面讲的那个内容理解了,也就是说我们讲的这套课程尤为重要。如果同学们现在听到这儿感觉跟不上思路,那你一定是没有认真听老师讲的这套课程,就是我们上微谷处的高校大学生C语言课程,这里面其实讲的非常清晰,包括就是这个数组、函数、指针我们都讲过啊,如果你这没有理解的话,那你回去要看一下这个视频了啊,没有理解能力,那你硬着头皮在这记这个题,那是没有办法的。你不理解你印记那记不住哈,最后17题啊,是15题分析,那同学们看15题呢,也是非常简单的一道题,它这样子的file,这是个文件指针,这是一个,这个X呢是一个数组,对不对,好open这打开了一个open,注意这句话呢,我我也讲过,这个是打开一个文件。
16:03
打开一个文件,如,呃,这个是一个二进制文件,后面带了一个B,是不是打开一个二进制文件,那么呃,如果文件不存在,不存在则创建一个还理解吧。啊,这个就明白了,那么FP是个指针,这句话很重要,这句话是什么意思呢?这句话就是像文件,文件,哪一个文件呢?开点data,写入数据。写入。写入数据,那么写入数据这个FY的到底是怎么回事呢?我们来看一下它的参数哈,呃,其实我们在讲课程课的过程中呢,我们讲过这一个嗯,这个呃一一就是一个函数,就是叫做什么呀。标准库文件我们看一下。是不是有一个标准库啊C标准库,标准库里面呢,有个f right函数,我们看一下,其实这些我都记得住啊,但是就是希望同学们知道是怎么来的,在这里面有个f right函数,看没看没有。
17:08
这个f right函数,看这个。对。这这个函数。必须要有一个了解,其实在讲课的时候我们都讲过,只在回顾一下。那么这个函数呢?它是干什么呢?把PTR所指向数组的数据写入到给定的流中,也就是说把PTR指向的数据写入到这个文件中。理解了吧,就就是这个函数是干什么呢?就是将。该。该函数的作用是将这个。嗯,PTRPTR,那这个就是这个,这个就是X了,就是将X啊指向的这个数组。数组的内容,内容干什么呢?写入到。
18:00
写入到哪个文件呢?就是FP所指向的文件。文件好,这是第一点,大家要清晰的。那问题来了,他到底写了多少个进去呢?它写入的,写入的数据就应该是这个size乘以,呃,这个NMU也说它写入的。写入的字节数,这样要分析出来啊,入的字节数就是什么呢?就是我们。这个乘以三。也就是说说的再直接一点,其实我们这个F呢,只是把前面三个数写入到文件中了。后面他没写,为什么他没写,他就他就考察你好,这样子呢,就写入了这个基。也就是说将什么呢?将这个X的前三个元素。啊,写入到哪个里面,写入到这个我们叫做嗯文件中,啊,这个这个文件中。
19:06
明白了吧,所以你们一你们一定要明白,就是后面为什么他写了一个嗯,Size of int3这个就代表他。从这个X这个这个所指向数组里面写了多少个数据到FP里面去明白哈,那这个就不去管它了,这个就是刷新一下,然后FRA读取这边呢,他又干什么呢?诶,他又把这个FP又读取了三个回到X,那相当于说又写进去又读了一遍嘛,啊这个就很好理解了。说这个又读取了,这句话是从FP中中读取。读取什么呢?读取这么多个字节。啊,到哪里呢?到这个X数组中。那当然也是按照呃零一这个从那个从起起始的那个位置开始读取的,好读取完了过后呢,他又去输出了这个元素,这地方输出同学们看那相当于写了三个进去,又读了三个回来,然后呢,原先456呢没有影响,所以他最后输出了仍然是123456。
20:15
啊,这个写入的时候对原先数据对后面数据没有影响啊,这边那这样子在输出,诶同学们看这样输出呢,就不会有影响这样输出。输出的就是什么呢?输出就应该是。呃,那就应该是一啊,有没有空格啊,他就123456这样子的。啊,我们可以试一下,看看这个代码到底是不是像老师说的这样子,好不好,我们来用一下吧,测一下来玩一把。因为同学们可能有时候怀疑是吧,诶是不是这样子的呢?我们来引入一下include std IO。Sdo,那这个就就引进去了一下就完事了,那完事过后呢,我们这边为了好看get差一下。
21:02
这个是关闭文件,不说了吧,都讲过哈,关闭文件来运行一下。好,现在我们写一个文件叫做D盘吧,因为我得写一个地址哈,不然的话到时他可能出问题,我们先申请一下解决方案。测一下看对不对,跟我们分析的是否一样,成功写入。好好运行一下,运行过后呢,我看确实1234556,同时呢,它会产生一个文件在D盘。在D盘会生成一个文件就是data,但是这个文件是个二进制文件啊,你是打不开的,打开过后你看不清楚,因为它是二进制,我们看尝试着打开看一下。二进制文件,看看能不能打开。啊,看不到,因为它是按照这个字,按照字节来存放的啊,所以说看不清楚了,但是并不影响我们看这个结果,因为这个结果我们还是看的很清晰的,就是123456啊,就是123456,好的,那这道题的分析呢,我们就到这里结束,也就是说最后这边输出的是123456。
22:01
答案结束,同学们,同学们,那关于这道题的评讲我们就全部讲完了啊,题呢,要说多,其实也。不是很多老师在讲的时候呢,其实可以很快就把这个题做完,但是呢,为什么咱们花的时间比较长,就是因为我主要是一边要讲,一边要给他讲,为什么比如说像这个函数为什么有个set,为什么这里面写了一个set of int,为什么是三呢?我得给你们讲清楚,不然的话大家就诶好像就知道一个答案,就没有什么意思了。别人一变你就不明白了,对不对?好同学们,我们把这道题嗯整整理一下,这套题呢,是我们的第几套啊,第六套题没问题吧。梳理一下。好,第六套题各位。那这道题呢,我们仍然从这来放好。给放这儿吧。这是我们这套题,其实就是第六套,第六套的话呢,我们把它的。这个图片先拿过来。
23:01
好。好,我放这儿哈。真题试卷。好的,同样我们给它来一个小的箭头,然后呢,来插入一个表格,我们把这块整体拿过来好吧。整体拉过来,这有点多对不对。没关系,我们复制一下。你看这看起来好像少是吧,其实你看讲完了过后东西还不少嘞。因为这里面涉及到有些东西要解释,就为什么要该说一下,为什么这个时间就会长一点,但实际上在考试的时候,咱们不会讲那么多,直接把答案给他就行了。好的,这是一个整理哈。好,格式也拿过来了,各位同学,那关于我们这一套课程,就呃这套试卷的评讲就讲完了,好,同学们这讲我们就到这里。
我来说两句