00:00
同学们,我们看27题,27题呢,我们考察的呀,它也是基本语法考察什么呢?考察C语言的基本语法,没有什么逻辑的东西在里面,就是看你对C语言的基本语法是否掌握到位了,我们看第一个。呃,第一第一个呢,是这样看的啊同学们,这是A选项,下面这个是B,看懂了吧,这是一块,好,我们看A答案呢,嗯,是错的AA答案可不可以这样写啊,就是这样写,他先写了一句这个,然后呢再这样写。这行不行啊,同学们,这个是不可以的,不可以错的,因为因为我们在在编译的时候,这个N呢。它不能是个变量,就是这个N不能是变量,就是这里X。XN。这里同学们看清楚了这个N,这里的N,注意听这里的N,不能不能使变量。
01:05
那有些有些同学老师你试一下,我可以给你们简单的测一下,比如说你看啊,我这有个N等于十,然后呢,我定义一个数组,比如说A吧,嗯,大家看这直接给你报错了。报错来说,他说N表达是必须含有常量值,你是个变量不不接受,所以说第一个题的错误呢,就在这,那第二个题,大家看第二个题呢,这样写的。先是写了一个红定义,然后再去写了一与这个话可不可以呢?这是可以的。为什么可以呢?因为这个宏定义在编译之前是预处理的。所以说他在编译之前呢,这个N已经被替换成十了。这就不会有错好说清楚。因为。因为。因为这里使用的是宏定义,宏定义属于什么呢?属于预处理。
02:05
它是属于预处理的,对不对,它现在属于预处理,所以说在编译前编译编译前我们这个呃,X这个N,这里的N被宏替换成什么呢?宏替换。乘X10。说说不会有错。所以说DB其实就是正确的了。所以说B,我下个结论B是正确的B。是正确没问题,第四我们来看一下这个没有没有见过这种用法。没有见过这种用法,这个是错的。第四个就同学们看到的这种用法,没有见过。没有见过。没有见过,好,那也就是说呃,不能这么使用是错误的,再看这个题,这个题肯定也不能这样写了,因为我们在定义数组的时候呢,这这个大小是要指指定的,在C中。
03:09
在C中。宿主。对数组的大小,数组的大小需要指定。你不能空在这个地方,除非你在定义的时候,比如说说老师,我在定义的时候直接给它赋值,这是可以的,因为你直接附一个值的话,编译器呢,会判断你的大小是多少,现在你又不负,没有给他负初值,你硬挺挺的直接在这写个硬的X中括号,这个是不行的,编译肯定通不过。所以说答案应该是选什么呢?答案是选B。27题答案选B没有问题吧?27题选择B答案28题来了,也是一个程序阅读题,若要定义一个具有五个元素的整形数组,下列哪个是错误的?第一个没问题分析。第一个是可以的。第一个呢,它只给了一个零,其他的值,其他的其他的元素值也默认也是零了。
04:08
第二个,当然这个肯定是正确的。因为它虽然没有指定大小,但是它是初始化的时候就全体整体赋值了,所以说也是可以的啊在。定义时,在定定义时就直接。直接复制。啊,所以说这个中括号大小可以默认。可以默认,默认就是几呢?那就是五,那就是五呗,对不对,大小为五,那五嘛,你给了五个元素嘛,那么我们再来看这个题,这样行不行呢。啊,这个是可以的,因为它二加三是还是个常量嘛,其实它就是等价int c。这是等价的,没有问题,可以这样用。这D这个D是错误的,错误的原因是不是D这个I啊,不能是变量。
05:05
I。不能是变量,因此是错误的,那答案出来了,答案就应该选择我们的C答案。28题选C。没问题,第29题我们继续阅读题,第29题呢,又是一个程序阅读题,一定要小心点哈,我们画一个图来说一下,首先看这句话,在这里呢,就会有一个数组了。这个数组分别是一、二、三。四五看懂了没有。那么这个时候呢,A指向这里,好,他说把这个A付给了一个指针R,那就是R呢,指向了第一个元素。看懂了没有,然后它的FR把这个R指针传给了P,那也就是说P呢也指向这个了,能理解吗?这是肯定的,因为它是一个指针传递,所以说P也指向它,但是有一点必须要明白啊,R仍然是RP呢,仍然是P这两个,这两个虽然都是指向同一个位置的,但是它是两个不同的变量,一定要明白哈,是R和P不是同一个变量。
06:13
明白吧,RRP是P。那现在呢,他说P加X,那也就是说P呢,往后面移动三位,那一位两位上,那P就指向了四,这个元素能理解不?此时此刻它输出星号P,星号P呢是取值,所以说呃,第一个应该输出一个四。然后再返回,返回过后呢,它在这里,呃,F调用完毕过后,他又去用星号R输出,你星号R没有动啊。大概没有星号R一直在这里没有动,它还是在这个位置,所以说它应该输出几呢?它是一说说四和一就出来了。能理解哈,那同学们,我把这个地方给它复制一下。好,也就是说这个结果分析,我们看一下示意图。
07:04
示意图示意图就是这个图。对,那答案显然就应该选择哪一个呢?就是我们刚才说的输出结果是一个是四,一个是一对结果是答案。看一下二。结果是什么呢?结果是我们的。嗯,四和一选择。选择谁呢?选择。D答案选择D答案,也就是说我们29题应该选择的是D。29题选择D答案。第30题我们来看一下,30题又是一个程序阅读的,这个题的代码比较多,可能会多花点时间来讲哈,这题有也不说很难,但是呢,他这边毕竟有一个for循环,又套了一个for循环,很讨厌,那我们来看一下呗。还是以画图的方式来讲好不好?
08:00
首先我们看这有个AA数组,里面AA数组呢,一共有十个空间,但是放了七个数,好,我们来看一下。跟着老师思路哈,那就是一。二。三。是。五。六。七后面其实呃,还有还有三个零。但是这三个零呢,呃,是默认的哈,就就三个零吧,给他。好的。呃,对了,这个不一定,为什么呢?因为它是个局部变量,所以这几个值不确定啊,不确定我们就不去管它了,不去管它了,然后呢,放AA7,那也就是说这个是个指针,看到没有,也就是说它把这个数组呢,传给了放这个函数的A,那也就是说A呢,就指向我们第一个元素,这个能理解吧。然后这个时候N等于几呢?N传的是一个七,好,没有问题。现在进到我们这个放函数IJKT,三四个变量。
09:02
我们先看这几个变量变成什么了,I上来过,大家看啊,这个for循环是整个从这开始的哟。包起来的要看清楚了没有,那所以说这个代码阅阅读起来有有一点难度哈,主要是东西多I现在呢,初始化过变零了。是不是0II小于N减一吗?显然小于啊,现在七减去一个等于六嘛。零小于六,然后呢,大家看K。等于,那K呢,就应该等也等于零了,看到没有,然后它又是一个内存循环。这个内存循环呢,结又出来了,哈节现在等于几呢?J等于I,那也等于零。J等于零,那解小于N吗?到这来了,零小于六小于七肯定是成立的,然后结加,呃,进来过,先要做这个判断了。是不是解小于N过后就进行这个if判断。
10:01
那一判断A结大于AK吗?显然不大于,因为现在现在结和K都是你是同一个数,所以说是不会进来的,不会进来呢,它这个节加二,看到没有节直接跳了两位有这个节呢,直接指到二来了。二就应该是三哦,那这个时候他又去判断。解,小于N吗?解,当然小于N的N是七嘛,和二小于七成立,然后呢,他又去看什么呀?他去看这个AJ大于AK吗?那我们看一下现在。呃。哦,这还有个七啊,我们看现在呢,嗯,大家慢慢看啊解等于几啊。结。嗯,现在是解,解等于二。皆等于。啊解等于二看清楚了啊结。
11:01
看一下。现在结没有动过,结哦,结,在这个过程中,我却确实结节等于二了,那节等于二的话呢。呃,二大不大于K的零呢,大于你看三。大于一。所以这个时候呢,K就知道结了,那现在K又变成二了,看懂了没有?然后他又又去让这个结加二节加二呢变成四了。到哪儿去了呢?倒是就到我们的这一个。这个呃,变成四变成四又到五了呗。就到五了,就到五了的话呢,同学们看五。他又跟谁比较呢?诶你有没有发现它让这个,呃,结现在是四,就是让这个数啊。让这个树。跟我们的AK比较,跟这个二比较,二呢,其实现在是三。
12:01
五和三比较哪个大呢?显然它大,于是又让这个K又去增,变成结,就变成四了,有现在K呢,走到这来了。好指到这来过后呢,它这个节再加二节,节再加二就变成了六,六显然指向这个七了,七又跟五比较。显然七更大,于是又把这个K变成六了,大家有没有发现他在做一件什么事情呢?它其实是在找下标为偶数的那个最大值。是不是再听听一遍,整个这个for循环是在找下标为偶数的。那个最最大的元素,那就找到七了,找到七以后,大家看他做一件什么事情呢?交换大家看I现在是零。I40,看到没有,I是零零。就说相当于是让这个数我换一个,换一个颜色的比好,同学们认真听。
13:02
换成蓝色的笔,其实它是相当于这个数和这个数进行一个交换,那换言之,这边就变成了七,这边就变成了一。然后他又做了一件什么事情呢?他又回去让这个I加二,也就说I变成这个二了,那I就指到哪个位置呢?指到这个位置了。我们可以推测出来。那下一次呢,他又在这个范围内,就是说在这个范,在这个后面三和五进行比较,因为这个N嘛,对不对,然后他它就不停的接近一个比较,然后让这个三和五进行交换。大家可以看到是这样子的吧,因为你你在这个地方七已经呃已经最大已经到这来了,所以说这个最终这个这个三呢,就跟哪个交换了呢,就跟五,因为这个六它是以下标为基数的,不会参与的。而这个后面这个呢,是一也不大于这个三,所以说相当于五和三交换,那这个三就变成了五。
14:02
而五变成了三。就结束了。为什么呢?因为它是I加二,再加的话,就已经不再小于N减一了,就退出,那也就是说整个这个过程大家发现他在做什么事情,其实就是按偶数这这种下标为偶数地方不停的去找最大值和最小值,然后交换。那最后这个数组就应该是七。二。五。四没有动436没有动六,下标为奇数,不用动它六一,也就最后是7254361 7254361是哪一个呢?7254361就应该是选择A答案。这个题阅读起来有一点难度啊,同学们。当然也不是很难,但是呢,也需要你动动脑筋看,如果你自己在答题的时候没有没有没有纸和笔的话呢,你的脑海要要反应的快一点才能做出来,最后答案就他。我把整个分析过程写到这来,最后的结果我标出来哈,最后呢,我们的结果用绿色表示。
15:08
好,整个分析过程看示意图,分析过程看示意图就它。结果。结果就是我们的七。254。361选择哪一个呢?选择A答案。A,答案是一样的,因此我在这里呢,输入A。答案搞定,那同学们关于前面的呃,就是21题到30题的评讲呢,就到这儿,待会儿呢,我们再讲31题。
我来说两句