00:00
同学们,我们来看21题。那21题它是一个什么题呢?也需要阅读源代码。这里是一个主函数,里面有一个字符串,S指向一个字符串,然后呢,他在这里,嗯,做了这样一个工作,一个dowell语句,对不对,那大家看到这个do语句,它在做什么事情呢?他实际上是在做这样一件事情。就是。对,这个S,嗯,大家看啊,首先我们要分析出来,S呢,它现在指向了一个数组比呃字符串,比如这个字符串是ABC。那么我们这个S呢?它首先指向这个字符串的第一个元素,大写的A。然后呢,摆放地输出它的值,大家可以看到这里呢有一个。星号S模,那哪个的优先级高呢?显然这个的优先级高。对不对。新S取值负的优先级要高于曲模,那也就是说它把这个A呢当成一个整数来使用大写的A,它已经告诉我,告诉我们等于65对,那也就是说65去模上一个十等于几呢?求余数减等于五,因此第一个就应该输出五没有问题。
01:15
第一个应该输出五写到这儿,然后呢,它S加加,这是指针运算,于是S就指向下一个。BB现在就是66了,66再去磨十,应该输出一个六没问题吧,输出一个六,输出一个六以后呢,然后继续加加S,再次向下一个CC应该等于67,那再输出一个七。输出一个七过后呢,对它再往下面移动,就取到一个标结束标记,这个时候呢,While语句就结束了,因此它应该输出567。21题咱们应该选择的是C答案。二十七二十一题我们应该选择C,好的,通过分析,我这里直接写通过分析。
02:05
通过分析。分析我们应该选择输出什么啊?应该输出567。选择什么呢?咱选择C答案就可以了。下面我们来看第22题,也需要阅读一下源代码,它说设变量已经正确的定义以下,不能统计出一行中输入字符个数。注,不包含回车符的程序段是什么?也就是说哪一段代码不能统出输入字符上的个数就选谁,我们来做一个分析。我们还是做分析,第一个大家可以看到。第一个选项呢。它是N等于0WHILE语句。Get得到一个叉判断是不等于斜杠,如果不等于斜杠N,斜杠N是什么呀?就是换行,就这点大家要分析出来,斜杠N是换行的意思是回车换行啊换行。
03:07
换行,也就是说当我遇到一个换行的时候呢,我就结束,否则的话呢,我就N加加输出A,答案是可以的。A,答案是可以的。这里我们再看到。B答案呢,它跟A答案就少一个,用变量来接收,这是这个无所谓,因为你get差呢,本身也是一个表达式,它也会得到我们输入的一个字符,所以AB都是正确的,AB都OK,都是正确。那么我们看CC答案,Y与N等于零,伽差不等于斜杠N。这个应该是没有问题的,因为它这个while语句在哪里呢?就是N等于零,判断一下N等于零哈,Get一个N等于零,Get一个看看是不是斜杠N,然后呢,再N加加,然后再去执行这句话,所以说C答案呢也是正确的,因为C是正确的。
04:05
因为什么呢?因为它的get的差不等于不等于斜杠N是循环执行的。是循环执行。因此它也是正确的,我们再来看D答案,D答案大家看有没有问题,D答案呢,它把这一个get差是写在for循环的第一个表达式这个位置,显然这个就不行,这个其实它只能读一个。他读一个以后,如果不是斜杠N就N加加,N加加过这个CH不会变化的,所以说D答案是不正确的,D是错的。D是错误的原因,原因是因为它的这这一个语句就是CH等于该是没有没有没有循环起来。没有循环,因此只会执行一次,因此只会执行一次。
05:06
那执行师以后他就N加加就就反复就执行,这其实就是个死循环了,没有意义对不对,因为CH拿到一个,他只要第一个不是斜杠N,那他永远都不会改变CH的值。所以这个答案是错的,那答案应该就选择D答案。我们应该选择D。对,我写到这里选择D答案下面看23题,又是一段程序阅读题。程序阅读题呢,我们看前面有两个变量,A1 a2 C1C2,定义好了,然后这是看F,然后输出它说。他说如果程序输出是12A 34b,那么我们输入的格式应该怎么样的?也就是说,他现在已经告诉我们,从这个输入我们看出来,A1是等于12的,A2等于。呃,这个CC1等于A字符,C2A2等于34 C2呢等于B字符,那这个就很很简单了,用空格间隔就行了,大家还知不知道我们在哦,不用空格间隔啊,那这个23题其实很简单,直接选A就行了,因为看第一个这个A34,所以这个没什么可说的,直接选A。
06:23
选择A,这个太简单了,没什么可说的,就按照它的格式给就行了,因为他这没有空格哈。他这个时看F没有空格,你也就不要给空格了,在输入的时候也不要给空格,选择A。24题,24题呢,我们要来简单的看一下它这个结果哈,这是一道程序阅读题,我们看一下首先。Fad,这个会返回多少呢?A是三四进去过后,Y减X乘以X,那就是相当于B减去A再乘以A呗,那B减去A。
07:02
那就应该一。一再乘以一个A。A,不就删吗?对不对,所以说这个返回来结果就应该等于三。AC呢?再调用一下AC是一样的道理了,就是C减去一个A。再乘以这个AC减A等于几?啊,等于五减三就是二乘以三。二乘以三,那这个返回就应该是六。六然后呢,再次调用这个F函数,这次调用进去就应该是六减去一个三,刮起来乘以一个三,那就应该等于九,答案B。没问题吧,同学们,我把分析的这个示意图拿过来就可以了,也就是说它一共调用了三次哈,分析我们可以看到调用调用是。
08:03
三次调用是三次。那调用的时候呢,先调用的是这个,再调用这个,最后调用它哈,调用三次顺序是。顺序是先调用FAB。对,然后调用AC没问题吧,再调用包起来。AB还有一个fac。那当然最后这个分析示意图,分析示意图。是哪一个呢?就他那答案就选择我们的。九嘛,那九就应该是选择我们的B答案。同学们,我们继续往下看25题,25题这个题呢,也需要咱们阅读一下源代码。我们来看一下。有一个有一个A字符,呃,A它指向一个字符呃字符串,好,这个字符串是GOOD没问题吧,Good,然后呢,把这个A,呃调用方函数。
09:18
调用调调用这个方函数呢,把数组A传给了一个指针S,也就是说S呢,注意听哈,S就指向了我们第一个字符G,看懂了。然后他在这里面呢,判断这个G是不是甲,因为也就到有没有到最后,如果没有到最后呢,就用。就用这个字符去磨一个二。摩二如果等于零的话呢,就输出这个字符。明白这意思吧,也就是说判断它就遍历这个字符串,如果这个字符串的阿斯柯玛模上这个二等于零就输出它,那我们现在看这个G等于多少呢?
10:01
G等于多少呢?G实实际上它已经告诉我们A的阿斯克玛是97,那么GG是多少呢?大家看G是在A的基础上加一个六,是不是?就你你算嘛,AA我们数一下A。BCDFGG刚好是在A的后面六个第六个字母,所以说它应该就等于呃,多少呢?103,那同学们问大家,103模上二等于零吗?显然这个是不等于零的,所以说它第一个就应该输出的是呃,不会输出G。不会输出G,而在这里面我们可以看到BCD都输出了G,因此这个就不用看了,直接选A就行了,你不用再一个判断哦,说我在下面再看S指向O,再算一下O再选再算一下呃,D这个没有意义了,因为G不会输出,那只能是选A了。
11:00
对不对,所以这个答案呢,我们通过分析。分析后。输出输出的是一个D。那我们应该选择什么呢?选择A答案。答案为A。没有任何问题,25题我们选A,同学们看26题。26题呢,也是一段程序阅读题,这道题啊,很容易迷惑人,很容易迷惑人。这题你稍微不注意就答错了,我们来看一下这道题好不好,我们来画一下示意图,首先呢。我们看到在内存里边将会产生一个X。对,那这个X里面存的是多少呢?存的是三,看懂了哈。Y呢?同学们看Y存的是多少呢?Y存的是五,看清楚了。然后这边有一个P指向X,所以说有一个P指针。指向我们X了,看懂了没有?还有一个Q指向我们Y了,那就是Q指向Y。
12:06
啊,中间我就没画了,本身这地方有一个地址,本身它有它有个0X什么什么什么指向,这个我就没有话了,简简写的好不好。然后呢,它在这里调用这个放函数,把P和Q传给了A和B,那也就是说现在呢,有一个A指针也指向了X。能看懂吗?有一个B指针也指向这个Q了。能看见吗?也就是说B也指向Y了,因为你是把Q的这一个值赋给B的吗?他们是指针传递。然后呢,我们再看里面有个C,大家看C是一个指针,它先让C指向A,也就是说C呢。也指向我们这指向A了,A也就是说C也指向这个X了,看到没有。看懂了啊,然后。呃,然后呢,A等于B,那也就是说让这个A指针指向B指针,那这条线就没有了。
13:07
让A呢,指向了B,看懂了。看懂了,然后呢,再来看C又付给了B,也就是说让这个。B呢,又指向C指向的位置,也就是说这条线就没有了。它又指向了X。那同学同学们问大家一个问题,这样操作对我们这个值有影响吗?对于我们这个值没有一点影响,对于我们这个P和Q也没有任何影响,因此它在这个地方再输出星号P和星号Q受指向的值其实还是三和五,没有任何变化。下面呢,他又说我传一个X地址和一个Y的地址,其实大家有没有发现,这里传X的地址和Y的地址和传P和Q本质是一样的,也就是说你这样调用和下面这种调用方法完全一样,因此下面也应该输出三和五。
14:05
说答案应该是三五,三五应该是选择B答案。这个题很容易迷惑人。这里面因为他在做的时候并不是交换值,而是让它的指针指向不同的位置,那对这个值呢,没有任何影响,也不会对P和Q造成任何影响,因此答案为。B答案,这个题稍微不注意就会打错。我把示意图给大家放到这里,好不好分析示意图?这里面呢,我们说一个小结哈,这里我们发现发现在调用调用函数过程中,调用我们的放函数过程中。放函数过程中没有对什么呢?没有对P和Q造成任何影响。造成影响。也没有,也没有,也没有影响什么呢,也没有影响X和Y的值。
15:07
因此结果两次都是一样。因此。因此输出输出什么呢?输出好,输出三五。逗号三五,两个三五,那答案呢,就应该是选择我们的B答案。也就是说我们这个26题应该选择B,能看懂吗?好,所以说结论好,答案。选择B。27题,我们再来看,又是一道程序阅读题。那又是一道程序,这个题也要小心点,这个这道题要小心点,好我们仍然是画一个分析示意图好不好,然后呢,首先有个MM呢,存了一个值进去是一有个N。N这个空间存了一个二。然后呢,让R指向MR呢,是一个指针指向M了。
16:02
没问题吧,然后呢,他把这个R和N的地址传给了一个函数P和Q,也就是说P呢,大家看有个P指针,它也指向了这个M,有一个Q指针,它指向了哪里呢?它指向了。一个。In,因为是传的。到地字符N嘛,所以说Q指向的N。然后下面呢,它在这个函数里面用P等于P加一,注意这个P等于P加一,其实是让这个指针。往往前面移动了一个int的位置,所以说这个P呢,就指向了另外一个位置,但是这个位置呢,不知道在哪里,我就没画了。因为它不是数组,相当说这个P的P,这个地址呢,增加了四个字节。然后星号Q等于星号Q加一,那这个很好理解,星号Q它其实就取得了N的这个值再加一,那么这个二就变成了几呢三。
17:04
对,然后他说最后这个函数调用完毕以后,回到这边来,再输出M和N的值,M呢仍然是一,而N呢就变成三,因此应该是一和三,所以说最后M等于一,而N等于三。显然答案就应该是什么呢?答案就应该是A答案。这道题呢,很容易让人答成什么呀,达成二和三。要小心一点。分析示意图。好的,我把示意图放这了,把示意图放这,大家看看能否理解,那选择答案。应该。最后输出的是一和三,我们应该选择哪个答案呢?显然是A答案。答案是A,我放在这里。第28题。第28题,第28题呢,又是一段程序阅读题,我们来看一下这道题是干什么事?他说啊,以下函数按每行八个输出数组中的元素,也就是说他要输出一个数组,每每八个数据为一行。
18:10
然后呢,他让我们在这一个横线填入适当的语句。那这个不就是属于一个换行符吗?那这个很好理解了,通过这个分析。分析,我们知道分析就是在下划线。下划线处。下划线处填写,填写什么呢?应该是填。填写这么一个东西。填写的填写的就应该是每每八个,每八个,每八个元素就输出一个换行符。换航服。那这个很很好了,那就这个没什么,可肯定不是用除法呀。那就是取模,取模看这两个哪个对呀。
19:01
大家这面看呢,很容易写成continue,这是不对的,如果你写continue的话呢,它当前这个第八个数就不输出了,也就是说其实你应该是呃,输出了一个换行,再把在换行过后再把下一个输出出来,所以说不能选continue continue会造成一个什么情况呢?他把这个换行符一书就直接又回到。这个爱加加了,那你当前这个数据没输出来,因此应该填写的填写。填写什么呢?填写的就应该是C答案。其实很好理解对不对,说每八个我就换一行,换一行过后再输出你当前这个元素,所以说答案应该选择C。没问题,第29题我们来看一下,第29题呢,这道题比较简单,看一下就可以了,他说有一个X是个一位数组,PT呢指向了X,他说对X元素正确的引用是哪一个?
20:02
这个肯定不行啊,这个都不知道在写什么,这个可不可以X加三是可以的,X加三就知道让X呢移动到第四个元素了,然后再用心取出它的值,这是OK的,所以B当然是可以的,这个为什么不行呢?PT加十不是也是可以运行吗?但是大家看到没有,你PT加十就到第11个元素了,而它总共有十个元素,这是不可以的。所以这个呢,就是不行的,PT加三,PT加三是不是对元素的引用,它相当于让这个PT这个指针指向第四个元素,但是没有新,如果他这样写就对了。如果说他这样写哈。这样写就对了。一个心一包起来。包起来这样就对了,但是很可惜他没有这样写,没有这样写的话呢,我们答案就应该选择B,答案分析结果是答案。答案为多少呢?B答案。
21:01
弊端。各位同学看二十三十题,30题呢,他说设有定义这么一个定义叉S 80in I,他说以下不能将一行数据。不超过80个字符的带有空格的字符串正确读入,也就是说它的意思就是说我将来在呃嗯输入一个字符串的时候,可能有可能有空格,大家看这个可不可以,这个显然是可以的。因为盖尺呢是按一行来处理的,我们再看这个可不可以,这个肯定也可以,为什么呢?它是get char,然后直到不等于斜杠N,斜杠N不就换行吗?说这个也也是可以,最后它封了一个尾,这个可不可以,这个不行,我们以前是不是讲过开F,按这种方式来输,它只要遇遇到一个空格,它就自动中断,所以说这个答案应该选C,后面这个就不用看了,也是正确的。要这个地方呢,我们要分析一下。分析就是我们这个SCF它是什么意思哈,同学们,这点大家要分析出来,就它呢。
22:06
是当遇到有空格时就自动结束了。当遇到。当遇到空格时,空格时就结束输入。结束输入,比如说你这样输入的号,比如说你输入个hello word。中间有个空格,那我告诉大家这个SS本S接收后接收。接收。接收后它是什么呢?其实它是hello,而不是我们想的hello word明白这个意思吧,所以说C答案就不能正确的读选择。C答案。单为C。同学们,那第21题到30题的题的解答,我们就到这里,大家先消化一下好吧。
我来说两句