00:00
同学们,我们继续来看第12套的后面的内容。第十题,第十题呢,它是一个呃阅程序阅读题,我们先看一下。这里面只要涉及到程序阅读呢,我们就需要把源码进行一个了解。我们直接画图来讲解哈,首先第一个看这里面有一个一位数组S,那么S呢,它有个N加一,所以说这个N现在知道是是多少,N呢,现在等于五。在这里一个宏定义。S呢,那S这个空间就应该有六个空间了,先放这里面数据未知K现在是等于一的,看到没有,所以说我把这个K呢也画到这。K等于几呢?K在for循环的时候,它等于一,好的K小于等于NN是五哈,那也就是说这个for循环会进来几?同学们就这个for循环会进来几次,会进来五次。那进在五次的话呢,它将这个K加一的值赋给SK,也就是说它相当于是在给这个K赋值。
01:07
呃,给这个S赋值,S数组赋值,那么现在K已经等于一了,所以说K加一等于二,它会赋给我们这个S数组的第二个元素,第一个元素未知。大家看到没有,因为K等于一了嘛,所以说是第二个元素等于二,那这个for循环大家有没有发现,其实它是不停的在让这个K加一,AK加一过后呢,再加一付给他,那后面就知道了,应该是三。是。五。六。最后这个第一个元这个就循环结束了,那S数组的第一个元素的值其实是未知的,那我们继续往下阅读它的代码,放函数,放函数呢,它把这个S大家看到没有,这个S传给了一个指针,也就是说放函数里面这个S指针呢,指向了我们这一个S数组,能理解吗?这是一个四,A是四,然后N是五,所以说大家知道这个,这个时候这个A呢,一定要理解哈,它是等于四的。
02:13
而这个N呢,这个N等于五的没有问题。那下面呢,我们来看这个节变量未知星号S,大家看这里,这句话很重要。他把A这个值赋给了新SS,实际上大家知道S呢,它实际上是指向我们这一个数组的,所以说星号S呢,就访问到我们这个数组的第一个元素A,也就是说相当于把四放在了我们这个数组的第一个元素里面去,就结束了,也说它在这在这个放函数里面返回来,再去给我们第一个元素赋值。然后这个while循环阅读一下,这个while语句是干什么呢?这个语句是在做这样一件事情,就说A。A只要不等于不等于S节节就减减。
03:03
那么现在我们要明白A其实是等于四的,能理解吗?那也就是说是他现在是怎么找的呢?他现在就是说我要去找一个,呃这个结,呃还有个节要确定啊,结现在是等于多少。结,现在等于五。相当于说现在这个S节其实是指向我们最后这个元素的,因为节呢等于五的,那也就是说这个Y循环其实是从我们最后这个位置开始去变历这个数组,直到遇到A跟A相同的这么一个元素就结束了。那换言之,我们就可以来看了,那么六肯定不等于四,所以说这个指针往前面移动。移动过后呢,515也不等于四,又继续移动等于四,好,同学们看到这里就OK了,大家看这时呢,它这个节减减的时候就移动到这个位置了,现在S节等于四,就是这个四,四呢就等于这个A,就这个条件就不再为真,就退出,那这个时候这个节应该等于几呢?
04:11
看它的下标,这是下标为零,这是一,这是二,这是三,所以同学们大家知道这是结果是什么了吗?它返回这个结其实就是等于四啊,等于三,因为下标也就是说它这个Y循环在做一件什么事情呢?它是从我们这个S数组的最后开始变利,直到找到一个等于四的元素就结束,同时返回这个四对应的下标是多少?那这个答案就应该是三,好,我把这个图截一下。呃,这个图呢,是老师的一个分析图好不好。哎,也就是说这个地方是老师的一个分析。好,这是分析的流程。
05:00
好,同学们,那么我就写到这儿,分析第一点,第一点呢就是这里。这里这里考察,考察的是对数组的负值。和一个外循环。那么示意图我们也有了。对不对,这是这是老师在讲课的时候的一个分析示意图。诶,这个图怎么放上去了啊,那最后这个答案也就明白了,最后返回的结果是什么呢?三。返回的这个结果就是这个值就是三。那最后我们这直接写个三就可以了,第十题就评价完毕,11题,11题又是一段代码的阅读题,这个题大家一看就知道,它是考察的又是我们静态局部变量的一个特性,它考察的是。静态、静态局部变量。
06:01
变量的特性,什么特性?特性呢?就是它只会初始化一次,即。只会,只会初初始化一次。这个特点。那么同学们,我们来看。这里呢,它有个负循环,一共循环五次,看到没有,所以它会循环五次,那循环五次的话呢,就会调用。对,就会调用五次什么呢,这个放。大家看它没调用的时候呢,就把这个I传进去了,I传进去呢,然后让这个I,这个I传给这个X,然后T加X,其实T呢,就在累积这个I的值,所以说这个放函数每调用一次呢,就把这个把这个I的值累积到T上返回。因此这就说这个地方这个初始化只会执行一次。
07:03
那那那么就是我们调用五次,说白了这个function function呢,每次就会把这个一,其实说白了就是求的是一,这边返回就是一到五的一个和给到这个T,然后再返回,回来看到没有,因为T只会做一次嘛,那你第一次这个T是一,再下一次呢,T在这个基础上再加一个二,再加一个三。再加一个四,再加一个五,结果呢就是15,明白了吧,而不会像我们想象的那样,哦,我调用一次放这个T就会至零,不会的,它只会执行一次,所以说这个结果呢,各位同学,结果出来了,结果就是15。啊,为什么呢?因为其实就是一加二加三加四加五这样得到的。所以说第11个空,咱们填15就可以了,12题,12题呢又是一道代码的阅读题,还是有点难度的,我们看这道题呢,它是。
08:10
以以下程序是按照下面给定的一个数给X数组的下三角字数,然后呢按这个形式输出。好,我们来分析一把呗,首先呢,它有一个X,是一个二维数组,好,二位数组我们先画到这里哈。二维数组里面呢,现在没有数据。N等于零,I及未知,它现在开始循环了,零到四其实就是便利我们这个行。行,然后这个I33节大I大于节,那也也就是说这个I等于三呢,只要大于节就可以,那大家想这个这个时候I是等于三的,截是等于零的,所以它应应应该会去循这个地方,应该是循环几次啊,应该是循环四次。
09:02
循环四次,循环四次的话呢,那显然这个地方这个值我们就知道了,就应该是I减减。大家看这个就是I减减。这个能理解吗?因为他要循环四次吗?那循环四次I减减N,在这个I减减过后呢,N加加N加加完了过后给这个Xi j加IJ负值大家看。这点很重要,同学们有没有发现Xi节其实进如果进来第一次,这个Xi节应该是什么呢?是三。零。大家看是不是三林呢?三林其实就是这个地方。然后再循环一次的话呢,这个I就减减,I就减减,I减减就变成了X2。结还不动,结在上面嘛,结是外层的,所以说二零。那二力是什么呢?是这个值,哎,紧接着X再来进行I又减减减I减变一一,这个I没有变化,I0,也就是说这是在给这个二位数组的这个位置负值,紧接着呢,它还要来一次,为什么呢?因为I大于等于结,而结现在等于零,也就说I大于零就可以了,所以说这个零还要进来一次节呢,还没有变零。
10:25
所以说他给这个复制,大家有没有发现,其实就是1234,然后呢,五六七八九十,所以它是从这个位置开始反着方向给它赋值的,那现在我想请问大家这里面应该填什么呀。显然应该填N就完事了,因为你N加加呀,你N原先是零加加变一,再加加变二,以此类推,所以这个答案呢,咱们就分析出来,应该填N。代码结束能分析出来吗?啊,所以说我们分析出来过后呢,我们发现。发现什么呀,发现实际实际。
11:01
实际上。是这个for循环,就是你们看到的这一段for循环啊。它其实是核心发现下面这个for循环是在反向的给我们数组赋值。对,就是同学们看到的这个玩意儿。就是这一段代码是在干什么呢?在呃,反向反向。反向的给我们二维数组赋值。数组复值分别是123456等等等等这样子的,所以说这边应该填写I啊,填写一个N,好,这个就分析完毕了,那也就是说我们现在第12题应该是这已经填好了啊,填好了就是就是一个是这填的。一个是这填的,那我这张不应该这样,我我把这个,呃,应该是把这个空格保留下来。保留下来哈,因为我不保留,大家看不到是填的哪个位置了,是I减减这边我们这个空格填的是N,还有印象吧。
12:09
好填是N好的,那第12题我们就讲完第13题,嗯,13题这个题呢,反而难度就一下就降低了,他说他说以下程序的功能是通过函数放function输入字符,并统计输入字符的个数,就说给你输入字符,然后让你把这个字符的个数统计出来,输入时用艾特符号表示输入结束标志。那大家看,那下面这个代码就比较简单了,我们看第一句话了,首先这有个none,后面有个空格,不知道写什么东西,那是一个数据类型,14不知道什么,那就往下看,他是干一件什么事呢?啊同学看他在这个里面调用了function。那家大家想一想,那你肯定这个函数要声明一下吧,所以说我们现在应该分析出来14这个位置。
13:02
分析第一个14这个空格。空格应该是一个函数的声明,哪一个函数呢?显然就是function。因为你要用这个方式,你必须得先申明才能用嘛,所以说这边呢,咱们就填这个就OK了。完事,紧接着我们继续往下看哈,下面呢,它这有一个for循环。大家有没有发现这有一个for循环,这个for循环是在做什么事情呢?他说M等于零,Get char,如果不等于艾伏,我们就继续去接收,那就应该是应该是把这一个得到的值,呃,就是这个M呢。应该不停的增加,是不是就是加一次加一次不停的增增加,看看它什么时候能够得到一个差嘛,就循环的,那这行吗?输入字符输入是不是有这个结束,那就不停的循环的输入就可以了。
14:01
直到有人输入一个艾,所以说这个循环咱们就明白了,那这个地方这个循环就是干什么呢,就是呃不停的。不就是不停的输入字符,直到直到什么呢?输入了,输入了一个这样的字符就结束。对不对,那当然这个M呢,你就加加就行了嘛,就是你加一个加加,诶加加这个,最后我们就返回他一共输输入的字符有多少个嘛,统计输入的字符数嘛,对不对,那来一个就加一个,来一个加一个,我们就最终统计到了,好,然后就M加加。M加加就可以用来累积,我们输入的次数可以累积。可以累积输入的次数并返回,并返回对不对,也就是说你什么时候终于输到这个艾特呢,这个M次DM次的时候输入那这个15,我们就输一个M加加就完事了。
15:03
那这边呢,我们也输一个M加加。代码就搞定,同学们,那关于我们第12套题选择题,还有一部分填空题就给大家讲完了,我们把它进行一个简单板书,还是板书到我们这一个笔记里面去,将来呢,咱们好阅读。这是第12道题。放过来。来走一个,那第12道题呢,有个图片,我们仍然把它拿过来。没有问题哈,然后这边呢,C语言第12套题讲解。这来试卷。好的,来一个箭头。来箭头,然后呢,我把试卷给大家插入到一个表格里面即可。放这儿吧。好,从这我们开始把它拉下来啊,这个代码呢,这个内容就比较多一点哈,因为题比较多嘛。好把它。
16:00
整体的拷贝到咱们这边来。拷贝这边来过后呢,我们把格式带进去。好,这边就有相应的图片就拿过来了。各位,那这样子我们这一套题的讲解就到此为止,同学们呢,把这套题好好消化一下,就是为什么,尤其是要搞清楚老师在分析的时候这个思路是什么样子的,但大家也看到,呃,如果你的阅读代码的能力比较强,其实还是很容易的,如果你阅读代码的能力比较弱,动手能能力比较弱,还是有些难度,对不对?好,这一讲我们就到这里。
我来说两句