00:01
同学们,我们来看全国计算机等级考试二级C语言的第13套,第13套题呢是一套上机题。也就是说我们上机题和试卷题呢,它是呃穿插进行的。我们看第13道题主要讲了哪些内容,我们首先把这套题拿到我们的桌面,一边一边讲呢,对,一边给他写代码,我们放到这里来,打开我们的第13套真题。我们首先看它的第一道程序填空题,我们还是老规矩哈,把这一段程序呢拿到我们的VS2010。同样,我们新建一个文件夹。添加新建一个ex exam。幺三。因为第12套题呢,是选择题对不对。我们新建一下。新建项取个名字叫EXAM13杠零一。
01:05
然后呢,我们把后缀进行一个相应的修改。把题放过来。同样道理,我们首先呢,对这道题进行一个阅读,我们换一行哈,那这些内容他没换行,看起来就非常吃力。哦,这边还有这么多哈,好的,我们来阅读一把,我们来看这道题呢,他说了什么东西,大家注意,我们在阅读题的时候一定要认真,不要看到这个题很长,大家就害,就会很害怕。就说你一句一句的读,把它读懂了再动手写代码。他说函数放它的功能呢,是进行数字字符转换,也就是说这是一个进行数字字符转换的一道题,他说若行参CH,行参CH找到了没有,对它就是它。如果这个形成CH是数字字符零到九,也就是说CH如果是零到九这样的字符呢,则零转成九,一转成八,二转成七等等,九转成诶大家有没有发现,其实它这个就是在什么呀,零到九之间进行一个什么置换。
02:17
颠倒,比如说你看这个1827是不是两头进行一个调换了,也就是说零变九,九变零。对,然后呢,大家看,如果是一呢,一就变成八,如果是二呢,就变成七,它是两头进行一个颠倒。这点大家要阅读出来,若是其他字符则保持不变。若是其他字符,则表示不变,也就是说,如果它是字母或者是其他字符呢,我们就原封不动的返回。最后并将返回后的结果作为注意,看这里并将返回后的结果作为函数值返回,那也就是说最后这个结果呢,就是转换后的这个字符。
03:03
请在程序的下划线处填写正确的内容,并把下划线删除,也就是说每一个下划线呢,都应该填写相应的内容,使程序得出正确的结果。注意呃,他说了,在考试的时候呢,我们这个原代码是在哪个文件里面不得分行和三行不得改变程序的结果,好了,那这道题其实大大致呢,我们一阅读可以整理成这样一个思路,第一点就是它。对不对,第二句就是这这句话,这是一个整体。第三一个。是不是就这句话呀,你可以稍微的把它处理一下是。也就是说其实他的要完成事情呢,通过这四句断句,就是我们把它断一下,就能看出来它它的一个功能了,那同学们我们来分析一把呗,我们一边分析一边走代码。第一个空格一。我们看一下空格,一同学们看到,因为他说了这个函数。
04:05
啊,函数放呢,大家看到没有,因为对,因为什么呢?因为函数放它是将转换后的结果作为函数值返回的,对不对,因此。因此,因此这一个同学们看return ch ch是什么类型呢?是char类型,所以说返回类返返回类型,因此返回类型就是差,那就应该填写什么呢?差就可以了,第一个空就解决了。第一个空就解决了,没问题吧,那我们再来看它的第二个空格,空格二。空格二,同学们看空格二呢,它其实是一个一符判断。它是一个易辅判断,从这里可以看出来,它是一个易辅判断。
05:00
它是一个判断语句。那大家想他在判断什么呢?大家有没有发现,他判断完了过后,其实就有一句话,给它包起来就九减去一个什么东西。那大想人家这说的很清楚,若行参CH中的数是数字,字符零到九,则怎么怎么样,若是其他字符则保持不变,大家猜也猜的出来,这个if语句其实就是要判断CH是不是零到九是不是,它是判断CH。CH。是不是在零这个字符到九这个字符之间。是这样子的吧。是不是在这个之间,因此大家知道怎么填吗?所以我们填写什么呢?CH小于等于九就可以了,注意。这个是九数字字符,而不是而不是这样写哈,如果你写成这样子就错了,它是一个九这样的字符,所以说这边应该填写的就是C是小于等于九,那我们就填进去了。
06:09
朋友们,CH小于等于九这一个数字字符。完事,那么同学们,我们再来看空格三。朋友们,空格三空格三我们可以看是九减去一乘什么值?诶,大家想一想,它其实是要零转九,一转八,二转七这样一个规律,是不是它转换的规则。转换的规则是这样子的。那说白了,说白了就是这个九要减掉一个什么呢?一个差值。就是减掉零到九的一个差值,如果是其他情况下呢,也是按照这个规则来写的,那你就想这个CH和谁一个差值就能够转成对应的这个字符呢。
07:04
大家想一想。是不是就是跟您了。是不是也就是说它这个九减去你原先这个字符跟几跟零的一个差值,就可以刚好转换它,所以说我们推断出来是这样子的,这里。这里就是九。九减去减去一个差值。差值。就可以,那么这个差值呢,应该是什么呢?就应该是你原先的这个字符减去字符零的一个差值,就是这这个差值应该是什么呢?应该是你的CH减。一个零就可以了,那是不是这样子的呢,我们来看一下啦,那也说这个应该是填写什么呢?它应该填写的就是这个东西。能理解吗?说老师我有点听不明白了,好,没关系,听不明白,我们把这写上去,然后给大家推断一下,大家看一下。
08:03
我们。我们这个来测试一下,比如说我这个CH就是九,那你看如果是九哈,如果是九,如果我们这个是九字符,那推断出来就应该是九,这个字符减去什么呢?减去九。再减去一个零,各位同学。这两者是不是刚好是相差一个九啊?是不是相差一个九,九对应的,你看就你不管这个九对应的是什么了,对吧,它肯定对应一个阿斯卡玛值,零也对应一个阿斯玛值,他们之间就应该相差一个九,那九九这个字字符减去一个九这样一个数字,它是不是就变成了对应的零这个字符呢?肯定是这样子的,如果同学们有兴趣,可以这样来推,我们打开阿斯克玛表,我们打开阿斯克玛表,来,同学们,我们看一下阿斯克玛表,这样大家一下就明白了,打开我们的阿斯克玛表。
09:11
首先呢,我们来看一下字符九对应的阿斯克玛是多少呢?同学们可以看到。这个九对应的阿斯玛值是57,所以说如果按照这个规则来看的话呢,对这个其实就是57减去一个九,因为这个值肯定是相差九嘛,它就等于多少了呢,各位同学。是不是就等于48。对,而48对应的48对应的这个字符呢,刚好是零。看48对应的字符是不是零这个字符啊,因此它就是零这个字符刚好就九转成零了,其他的一样的道理,其他你可以再试一下,你比如说我们再测试一个就完事了啊同学们我再测一个就行了,如果是。
10:04
如果是把这个字符,那就对应变成了什么呢?把这个字符减去,把这个字符减掉一个零,这个字符对应的阿斯克玛,那也就是说相当于是把这个字符。对哦,不不不说错了啊,这是九,前面这个九是固定的,前面这个九是固定的,对不然的话那就错了,九那就是九这个字符看清楚了,减去一个什么呢?减去一个八,那应该等于多少呢?显然等于40几啊,是不是49 49对应字符是不是就是一啊,你看一下吧。49阿斯克玛,49对应的字符就是一这个数字字符完事,所以说这个结果呢,就应该是正确的,那同学们可以再运行一下,我们看一看,为了好看呢,我们来个get查一下,好吧,它分别测试数据是28AA这个字符呢,它不是属于零到九的,因此呢,它应该原封不动的输出,因为我这做了一一步判断,只有在零到九我再去处理,如果不是零到九呢,直接return。
11:19
直接return朋友们,我们运行之。我们运行起来。那运行起来过后呢,我们看这个结果跟我们想象的是否一样,我们发现完全的正确,你看二到七二是变形八变1A还是A正确的。第一个题我们就讲解到这里,好吧,最后呢,你在做测试完了过后,把你自己添加的不必要的代码删掉即可。同学们,我把这道题的分析和解答放到我们的试卷中。分析。和解答。好,第一个题说完了。
12:00
我们再看这个修改题,修改题我们还是老规矩,把这道题呢,先拿到我们的这个VS2010。新建一个文件。新建一个文件来走起来。文件呢叫EXAM13杠零二没问题,把后缀做一个相应修改。把后缀做一个相应修改。好的。然后呢,我们仍然是先阅读题,然后再走代码。我们来看这道题呢,它是一个怎样的要求,他说给定程序MOC。中的函数的功能放的功能是首先将大写字母转成对应的小写字母。第一个工作。看清楚没有,也就说先把大写的转成小写的。若小写字母是A到U这个之间,则将其转为其后的第五个字母。
13:03
待会他肯定会举例,相当于说转,转完了过后,如果是小写字母是在A到U字间,那么就把它转成其后的第五个字母,若小写字母为V到Z。七使其值减去21,转换后的小写字母作为函数值返回。他举了一个例子,大家看,若形参字母是大写的A,大写的A先转成小写的A,它落在哪个范围呢?落在A到U之间。于是它应该转为其后的第五个字母,第五个字母是哪一个呢?显示F了,所以说他说则转换为小写字母F。若行参式字母W。那W是什么呢?W转成小写字母是不是变成小写的W啊?那小写的W在哪个范围呢?小写的W是不是落在V到Z之间?
14:01
落到V到Z之间,因此呢,它就会转成小写的字母B,为什么呢?因为它要减去一个21,而大家可以想到W减W这个字符,减去21过后呢,其实就是等于B。这个大家可以去推一下。可以退下,好,那么他说请改正函数放中指定部位的错误,然后呢,使其呃能够成为正确的结果,修不要修改这个命令函数,好的,那现在首先呢,这样同学们我们先看一下它当前这个结果是怎样一个结果好不好?我们试一下。我们输一个串,比如说我们大家看说enter,一个字母get super,好,我们先看看,假如我们输进去一个大写的A,它会转成一个什么,先看一下。对,我们先输一个大写的A吧,A字母。
15:01
回车啊,这个地方应该来两个get char,原因我不再解释了。第一个是过滤回车对不对运行。运行过后呢,我们再输写,输入一个大写的A,朋友们。回车。哎,你看这个显然是不对的,他说一个大写的a change to改成了一个叹号,显然这是不正确的,我们大写的A呢,根据它的要求,其实应该返回一个什么呀,朋友们,小写的F。显然不对,那么现在呢,我们就要阅读源代码了,我们看哪里有错,同学们看一下。来吧,根据这个思路,显然核心代码是在这儿。所以说我们分析。分析的时候呢,我说一下,因为功能转换功能。转换。转换功能是。是在哪里呢?是在半函数。
16:02
因此直接阅读,直接阅读我们放即可。对,那现在呢,我们来看一下它的错误可能是哪个地方,我们先看第一个,他说看这句话是什么意思,如果字符是大写的A到大写的Z之间,它让这个C减去一个32,对吗?对吗?显然这是不对的,你想一想,你首先人家这说了,他首先先将大写的字母转成对应的小写字母。那同学们都知道,大写的字母的这个阿斯柯玛值是小于小写字母阿斯克玛值的,这个大家应该是有印象的,大家看我们大写的A,我们的大写的A它对应的阿斯克玛值是65,而你小写的A呢,对应的是97了,人家阿斯克玛只是先排的大写的字母,再排的小写的字母呀。
17:04
所以说你这样做肯定是不对的嘛,你这样做其实是相当于想把一个小写字母转成大写字母了,这是不对的,所以说第一个判断出来了,因为我们是将大写。大写的字母字符啊,字符转成小写的字符。因此,因此这个地方就错了,哪里呢?这不对,这个应该改成,应改成C等于C加32,注意啊,为什么是加32。因为他们的对应的字符大小写之间相差32,所以说第一个我们就改完了。没问题吧,我们再看阅读下句,他说C到A到U之间,C减,这个显然又不对了,大家看这里第三句话,因为我们。
18:03
我们是这样子的转换其后的第五个字母。将其转换为其后的第五个字母。因此。因此你这个地方肯定是不对的,A到U之间,你A到U之间,你是其后啊,后面的第五个字母,那显然是要C加才对嘛,所以说应改成应改成什么呢?C等C加五。这样才对,也就是说减应该改成加,那看下面这个没问题吧。V到V到Z之间是减去21也是正确的。那有些同学老师还有些字母没有在这个范围之间怎么办呢?人家说了不处理,你也不要去多添代码好不好,这个代码就改完了,也就是说改两个地儿,一个是。一个是这个地方要修改成C加32,一个是这个地方要改成C加五,代码写完其他地方不要动,其他地方不要动,朋友们,我们来测试一下。
19:09
就说你整完了过后一定要测试一遍,测试一遍大写的A。没有任何问题对不对,小写F嘛,A千机to小写F,没有任何问题,朋友们我们再来看。下边呢,我们是不是该给来测试一个什么呀?我看他说请输入一个大写的WW。OK。回车是不是小写的B啊,完全正确,好,那么第二个题的平角呢,也就结束了,我把它也放在我们的笔记中。不放到这一块哈。诶是释放到这,这是我们的第二道题,也是程序修改题,这是它的分析分析和解答。这道题的关键点大家看出来是在什么地方没有,关键点就是你必须对阿斯克玛表有一个基本的认识,这个阿斯克玛表呢,我们在大学生高校大学生C语言课程里面是讲过的。
20:14
讲过的,这里我就不再多说了,因为我们这是在在讲题,如果你基础知识没有过关,请你们看老师讲的高校大学生C语言课程。各位同学,那这前面两道题我们就先给大家讲解到这里。
我来说两句