00:00
同学们,我们来继续看这个2014年C语言CC语言二级的31题到40题的评价。那首先我们看31题的题干,他的题是什么呀?他说有一个程序是这个样子的。这个程序大家简单的阅读一下,你分析一下它是一个什么意思哈,第一个呢,同学们看,它这里给了两个字符数组A和B,然后呢,它接收。他接收一个字符串进去,这个地方一定要明确,呃明确一点,当这样接收的时候啊,当这样去接收接收输入时。它以什么结尾呢?同学们这点一定要理解,就它遇到一个空格,它就结尾了,明白这个意思吗?就是当。注意听这句话。当遇到。遇到,当遇到一个空格就结束。这点是非常重要的,也就是说我们这样去给他传一个字符串的时候,如果遇到一个空格,那么A就表示输入完毕,Get。
01:08
各位,这个是代表接收一行。接收一行字符串,这个还是不是讲过的。好,那这两个结合起来,大家就应该知道输入什么了,他说当程序运行时,输入一个how are you I'm fine回车,那各位同学请看是不是这个地方how。他这这个号一旦被输入的话,就被我们这个A接收到了,因为这是个空格,所以他就停下来了,因此A其实它真正接收的是一个号。对的,他接收一个号过后呢,同学们可以看到,然后后面的这一部分,就后面的这一分啊,有问号I'm fine。这个呢,就被就会被这个B接收到。明白了吧,所以这样子我们分析出来A呢,它这里面其实存的就是一个号。
02:01
没问题吧,然后这个B呢,里面存的就是什么呢,就这部分ru什么什么什么什么。这样就完事了,那这样子同学们看,当这样一接收,我们看它输出的时候,它这样输出一个百分号,一个斜杠N,斜杠N是代代表换行啊,所以它应该输出一个号,然后就换行了,换行输出rum fine,这样就结束,也就是说这个B答案是正确的,因此,因此输出就是。就是什么玩意呢?就是B答案好,答案回避。答案为B。评价完毕,我们看31题啊,32题,32题呢,他说有一个函数的定义,它已经给我们了,是这样一个定义,看懂了。看懂了,也也就是说这个时候呢,是一个放里面接是一个KK,如果小于一就返回零,K等于一就返回一,如果K不在这两个范围里面呢,就去递归调用,这里面可以分析出来一点。
03:07
就是呃,这这个放里面呢,会递归。递归。递归的调用什么呢?放函数。那同学们可以看到,同学们可以看到他说啊,如果我们在执行一个放三的时候,则函数放被调用的次数多少?哎,同学们,我们在讲递归的时候,在前面讲高校大学生摄语言课程的时候,是不是把递归讲的很清楚的?那这个时候呢,我们可以画一个示意图来分析一下,比如说我们第一次调用的时候。第一次调用这个放的时候,注意看我画这个图啊,同学们是不是第一次调这个放的时候,这个时候这个K做一个局部变量就等于三。第一次调三进到这里面来了,过后呢,它不小于一,它也不等于一,是不是就进到这里面去,于是它在这里面会再次调用一个放。
04:05
这时它应该是K减一,当然就等于二了,因为K等于三嘛,三减一等于好,在这里面是不是又进行第二次的调用。也就是说他这边就进入第二次调用这个棒了。在第二次调用这个放函数的时候呢,请问K等于多少啊,K等于二各位K等于二在这个这个调在第二次调用放的时候呢,K不,呃小于一不成立,等于一也不成立,于是他又去调用一个放。这个时候应该穿的是二减一,就是一。所以说又进行第二次的第下次的调用,所以说这是第三次调用,第三次调用的时候呢,各位朋友,这个时候这个K呢,就等于一了,而K等于一的时候呢,各位同学,它就return,这个时候它就一层一层的返回,就这样返回。然后这个呢又返回,所以说他一共调用几次呢,各位朋友,各位同学。可以看到它调用了一次在这里。
05:02
第二次调用。第三次调用,因此答案应该是几啊,应该是B啊,我这通过。通过分析分析,那么方等于30,方等于三会。会递归调用,递归调用放函数几次呢?三次。答案应该选BB,因此选择B。选择B答案,各位同学,我在这里写上哈B答案。那接着我们看第33题。33题是一个怎样的题呢?我们先看一下它的,他说有一个程序。放。XY,然后X不等于Y呢,就返回YX加Y的和,否则就直接返回X,然后这边呢,它给出了三个变量ABC,分别为456 456。
06:04
然后这里面呢,它调用这个放函数这个地方二乘以A,好,我们把这做一个分析,第一个。这里调用哈,就这样会调用,其实调用是什么样的呢?放这边是一个八,然后这边又是一个。这边传的是一个五和一个六。是不是,那我问同学们一个问题,就是放掉五和六会返回多少呢?X,因为你这边传进去,传到这个行参里面去呢,X和Y分别是五和六,因此呢,它应该返回X加Y的和,也就是说这个地方会返回一个11。那这边会返回一个十一八十一又会继续调用这个棒,那么X和Y仍然不相等,再把它的和返回,那这样子呢,就返回了一个19。
07:00
所以说这个结果呢,应该是19,有吗?答案B。好,因此我们选择B。答案B答案紧接着我们看第14题,14题这个题呢,稍微有点麻烦哦,注意听这里面涉及到一个静态的变量,所以说这里需要理解呃,这个静态局部变量的概念。静态局部变量。各位同学,静态局部变量有个特点是什么呀?它只会被初始化一次,还有印象吗?理解这里哈,就是静态。局部变量。只会。只会被初始化一次。初始化一次,这这一点是同学们一定要有印象的,好,那这样子呢,我们就来开始玩了。首先他定了一个IS等于一,然后这边做一个循环,一到三有三次,也就是说调用三次放函数,看到没有,所以它这会调用三次方函数,那么每调用一次呢,这个会把这个结果和和S相乘好,我们看第一次返回是多少。
08:15
呃,一共注意听这里啊,从从这里面这个循环我们可以看出会调用三次。三是。什么玩意儿呢,半函数。好,那么我们来分析一下,第一次调用这个方函数返回几啊?同学们,第一次调用方函数是不是返回一个X乘以二的值,第一次调用注意听。第一次调用返回一个二,所以说这时呢,我们这个S在这么这个S呢,也就等于二了,这第一次的第二次。第二次调用各位同学,它返回的是几?这个很重要。在第二次调用这个方的时候呢,因为这个X啊,它是一个静态的局部变量,因此呢,不会再重新复制为一,它就会在原先这个值上变化,你原先X第一次调用这个,这个X其实是等于二的。
09:14
对不对,X等于二,那你第一次再再调用这个X就在二乘以二,所以说这第二次调用呢,这个X它其实是四了,那么既然是四,它返回的呢,也会是一个四,所以这个是S乘以四了,所以这边就是S等于。SS等于什么呢?原先这个二乘以四,那就等于零等于八了,能看懂吧,等于八了。好,第三次调用。第三次调用注意听第三次调用吗。第三次调用我们这个X呢,它也不会再次被初始化,它会保留原先的这个值,原先值是多少呢?是四四,呃四再去乘以二就变成八,所以说这边就变成八,返回一个八,那相当于说是在原先这个基础上再乘以一个八,能理解吗?那这样就是八乘八。
10:07
等于几轮呢?等于64答案,64。OK,答案就是64 64的话,那我们选应该选D,因此这个结果各位朋友。这个就应该是D,答案D第35题。第35题呢,是一个红替换的这么一个题。分析好这个考点。考点是考察考察这个宏替换。叫宏定义或叫宏替换。那我们来看看,嗯,就是这个地方哈,就这句话被红替换过后变成什么呢?就是红替换后。替换为什么东西呢?他就变成这样一个东西了,是不是首先它是S这样一个东西,它是先把这个拿过来替换成这个东西了。
11:05
替换成这个公东西过后呢,这个是带参数的宏替换,说这个X会变成它,这个X可以变成它,注意啊,没有小括号,因为你这个地方没有小括号,如果对方有小号不一样,没有小括号的话呢,就是简单的一个替换,简单替换过后下面就可以写了,就是四乘以。K加IK加IK等于五节哦,K加JK加J等于七,再乘以KK等于五,再加上解,解等于几啊,几等于二再加一这个等于多少啊,前边这个等于140。是不是那一百四一百四加一个三等于143,答案明确了就是B。各位同学,答案就是B。能理解了吧,好,这个呢,就是我们前面五个题啊,前面五个题,那接着我们来看第36题。
我来说两句