00:00
同学们,那么我们现在呢,就来看一下。全国计算机二级C语言历年真题。在这个讲解。二级真题的过程中呢,我们把它分成两个部分,第一部分呢,我们是选择题,第二部分呢是操作题,本身它这个题型也是这样分布的,对不对。那在这里呢,我特别要强调一点,就是大家在前面讲看C2级考试大纲的时候,大家有没有发现操作题其实占60分。选择题呢占40分,说操作题占的比重现在是越来越大了。因此呢,我在这说了这么一句话,操作题看我们授课的安排,可能会多讲几套,为什么呢?因为。占的比重太大,如果说操作题错一个题,那基本上20分就没了,所以说非常危险,所以说操作题呢,我们会把它作为一个相对来说重点来讲解。
01:01
比重比较大,因为它占分值比重比较大,所以这是选择题和操作题的一个说明,那现在呢,我们就来开始看第一套。我们在前面讲过,就是对于操作题而言,我们先来讲这个操作题,也就是所谓的上机题。那么它一套呢,一般来说包含了三道,分别是一道,就是我们所说的填空题,它有一道一道填空。这个大家知道,还有一道呢,就是改错。还有一道是什么呀,同学们,还有一道题就是我们的程序设计题。那么这这三个题呢,它就形成一套,所以说我们来给他讲解一下。那首先呢,我们看第一套,那就先把第一套题打开好,打开我们把这套题呢,复制到我们的桌面。好,附在这个桌面。好,我们把它先打开哈,打开我们来一边讲呢,咱们一边分析。
02:04
首先看第一套题里面的第一个叫程序填空题。那么程序填空题第一道题是怎么说的呢?他是这样讲的哈,首先我们来阅读这个题,然后呢,我们把整个的思路分析写到这里来。这边是分析。思路分析,好思路分析,然后这边是代码实现,能理解我的意思吧。代码实现就是按照这样一个流程呢,来给大家讲,首先我们看思路分析。先读题。下列给定的程序中。这个函数叫放。棒的功能是什么呢?B的功能是通过某某种方式实现两个变量值的交换,也就是说它是用来交换两个变量值的。规定不允许增加语句和。表表达式不允许增加语句和表达式,例如变量A初值为八,B初值为三,程序运行的结果过后呢,A这个变量的值为三,B为八,也就是交换了,因为你原先A是不是八呀。
03:11
B是三,经过交换过后呢,就一个是三,一个是八了,能理解。那现在我们来分析一下,同学们看这个这个题大家看一看。我们干脆把这个思路分析也写到这里,可不可以就一边分析一边写代码就就完事了,可以吗?大家首先看这里。同学们看这它前面呢,这有个空号,这有个空,那大家看这个T是一个变量的名称。那前面这个一肯定不用想,想都不用想,一定是一个数据类型。是不是,所以说这个一这个一这个空格,空格应该应应该什么呢?应该是。一个数据类型,那问题来了,他这个数据类型是什么类型的大你看前面都是硬的,你看后面他怎么用这个T的嘛,是不是他把新X,新X给到这个T,那新X是什么呀?大家大家可以看到这个X呢,它是一个指针。
04:13
是不是一个指针类型呢?那新X就是通过这个指针取一个具体值,那么这个T呢,一定是一个int了,所以这就分析出来它是个int。那再看第二个空格,第二个空格大家分析一下。同学们看二这个空格,你你们能看出来应该填什么吗?第二个空格你看它是个return语句。Returns这个T我们以前写的时候呢,是这样写的。是不是一般一般是这样写的吧,但是他这样用括号括起来呢,也是可以的,也是可以的,那大家想return语句后面是不是应该带一个分号啊。我们在前面学过C语言的基本语法就是每个语句,语句后应该是。Hope。后是什么呢?应该是一个分号。
05:01
也就说是这个号,那换言之二呢,应该填一个分号。明白我的意思吧,那最后这边再来看。下面这还有一个符号空格三,那大家看一下这个代码,你们能看出来这是什么吗?A43 B48,然后它输出了A和B的圆圈的值,这句话是在输出。输出A。AB的原始值。什么叫原始值呢?原始原始值就是它最初的值,肯定一个是三,一个是八了,然后调这个放。那么这个调这个。放怎么调的呢?那就是这边传一个指,但想它这边是个指针,是不是你要传一个地址过去啊,从这可以看看出来三。删这个空格应该。应该是一个地址,那是谁的地址呢?显然是A的地址了,因为他要实现AB的值交换,那肯定这边是填一个A的地址,那就应该是。
06:09
DA。就写完了,那么这个A进去过后,通过它这一个指针取值,针对这个指针取值来修改这个X所指向的值,同时呢,把这个返回的新的值交给这个B,就实现了交换,所以代码就写完了,那么思路分析就这样子的一个分析流程。能理解吧,这是老师的思路分析,那最后嗯,这个呃,结果就是第一个空格。一空,我们这样说空格一,空格一呢,应该是填的一个int没有问题吧,同学们,空格二。空格二应该填一个什么呢,同学们。A。诶,我这整错了啊,空格二是不是应该填一个分号。是吧,分号空格三。
07:03
空格三应该是什么,同学们?空格三是不是应该是咱们的一个Dollar a。诶就这样子就写完了,那么我们来试一下,因为你在进行这个处理的时候呢,最终要把这个代码其实是你是打开的。你是打开放在我们这个VS2010进行测试的,所以说我们呢,也把这个修改过后的代码来运行一下,来看一下。放这儿哈。放这那么现在呢,我新建一个空项目,这个呢,我们就叫做真试题评讲,或者叫试题试题exam,咱们就写啊叫做C。在C的exam。多个啊,这是我们多个考试试题,我就写到这里来。好,然后呢,在这里面呢,我们每个原文件里面写上一个过滤,过滤器就是一个文件夹,然后呢,指定这边是我们第一个练习。
08:07
好吧,然后呢,我们把第一个题写到这里来。第一个题就是我们写一个哈。那么这个我就叫。怎么取个什么名字啊,怎么就叫三米一啊?这是第一个题。好,然后呢,我把后缀改一下。我们看看打开过后这个文件是否我们想的一样,那这边填一填就行了,好吧,第一个地方应该填int。第二个地方应该填一个分号,能跟上我的思路哈,第三个地方应该填一个什么呀,艾特A写完了,那为了能够看到这个效果,是不是我们应该get恰下再get恰下。同学们,在实际的做题的过程中,这两个不用写,再说一遍,在实际过程中,如果他没有填这个,你就不用写了,明白吧。实际过程中你不需要加任何东西,明白意思啊,特别说明。
09:03
特别说明,因为我们以前这个工具呢,不是VS2010,是那个VC6.0,所以说它后面不用get呢,也可以把这个控制在停在这,但是到了VS2010过后呢,很多题,呃,很多地方都需要有一个暂停的这么一句话。好说明,如果注意听,如果原来的注意听原来的题中。题中没有。没有给他唱,不要添加,请不要添加。请不要添加,因为这面题人家说的很清楚,就是你你你就你就给他改成一个int就行了。这边就按照实际情况给他把那个空填上就行了,能理解我意思吧,好,我们来生成一下。解决方案,看看这个代码能否跑起来。三和八是否发生了交换运行一下,好吧,我们运行起来,我们发现呢,原先是三和八,现在变成八三了,第一个题咱们就做完了,看第二个题标程思路,嗯,第二个题呢,我们仍然是一边讲一边分析,好吗?
10:12
来,查出一个小表格。好,我们仍然是分析,诶这个为什么是这个大大的了。好,我重新来插一个表格。好分析,先是分析,然后是代码实现。来跑一跑吧,首先我们看这道题的题是什么呢?他说给了一个程序叫Mo c。在这个。在这个函数一个放函数。放这个函数的功能是什么呢?求两个形参的乘积和商数,就是求它的乘和它的除。并通过行参返回返回调用函数,例如说的是这个值和这个值输出的是C,它们的乘积等于这么多,它们相除呢等于这么多,然后呢,他要求改正方程函数里面的错误是什么?
11:06
然后呢,使得它能得到正确的结果,注意千万不要改动main函数,就它不允许改,那么首先我们要注意在这个分析过程中,第一种不能修改。不能修改main函数,这是一个要求,第二点呢,同学们要注意,因为这个修改题呢,我们本身是可以直接放在VS2010去运行的,所以说你呢,先把这段代码先把它放到VS2010去,也就是说你先用这个先打开它啊。因为因为这个源码,源码是可以。哎,是可以。可以通过,通过什么呢?通过我们的这个点,Sln这个项目打开的,大家还记不记得我们在先前讲过,可以通过一个后缀把它打开,在这我们不是不是讲过这个东西吗?大家应该还有印象,就这。
12:04
就是你在考试的时候呢,其实你是先把你是先把这个项目这个工程打开的。是不是我们在这说过这句话,比如说你打开的是SRN这个项目,把这个项目打开,它代码也就出来了,然后你直接在这改。就好像我们现在改错题一样,我们看完这个需求库,点VS200就打开了,然后把项目打开过后呢,它的代码就这样子的。呃,所以说呢,你就直接直接在上面改,因为这边还有提示信息更方便了,好我这多说一句。好,我写到这边了哈。可以通过这个项目修改打开。打开。这样呢,这样便于便于。便于修改,因为他还给你提示错误嘛,对不对,好,那现在呢,我这就直接把这个代码拿过来用一下好吧。跟上老师思路咯,走一个。
13:03
好,然后呢,我们写EXAM。这是我们的,相当于是第一套题里面的第二个题,这样编号好不好,这样编号更更好一点,我觉得就第一套题里面的第二个题这样子。好,同学们跟上我的思路,然后呢,我把这个改一下。放到这好,同学们看,这边一放了马上就报错了,你看这边是一个未识别的B,这边也是未识别的Y,知道什么意思吗?大家有没有,那我在这儿分析了。我直接这分析把代码写过来啊分析大家看,首先第一个你们有没有发现我们行参是不可以这样写的,就这种行参是一个一每个行这样写行参。这样。行餐形式不对。行餐。啊,形式不对。你应该改成什么呢?应该这样改吧,是不是把这么写个double?
14:00
这边也写个double,这样才过得去,至少但是呢,我们有这个就写完了,你看这个这这把这个一加完事了,就已经应该改成这样子的。那改成这样子,过后我们再看这个地方有问题了,同学们看。这里面呢,它这个CC是一个D,取了一个地址符,这边也取了一个地址符那。大家想,人家说的主函数不能改。那既然主主函数不能改,那你只能改这了,大家想这种形式是不是按地址存放的呀,我做一个分析。大家可以看到在这里。C是地址。是不是,而且它不允许改主函数,那你只能改这那既然是地址它们它这个行参,它这个形参就应该是什么呢?是指针呢,指针类型,那换言之,其实这个地方我们改的还不对,应该改成这样子才可以。
15:00
这样一改呢,你会发现这边调用就不出问题了,代码就OK,但是你这样一改过后,下面是不是又又需要修改了。因为你这是A乘以B,而A乘以B它负给了X,那X它是一个指针,所以说你在这要用取取值的方式来得到,才可以明白我的意思吧,这边呢,也是一样的。好,我们在这里注意哈,因为。因为这个X和Y是指针了。指针,因此,因此就是需要,因此需要。需要通过取什么呢?取直符这个。来处理。来接收值,来接收接收值,不管是所谓的乘积还是它所谓的商,要这么去做,那做完了过后,大家有没有发现它直接输出C和D,为什么可以直接输出C和D呢?因为你是按指针按地值传进去的,说这里面X和Y改的值其实就是直接改的C和D,明白了吗?还有一点要注意听好分析二。
16:16
因为是按照按照地址传递的。按照递地址传递传递,因此,因此这个放函数。换函数。函数修改。修改的或者是呃,修就说修改啊,操作操作的这个X和Y就是什么呢?就是这个C和D。你在你操作X的时候是这样操作的吗。是不是,你看你这是不是取的值啊,你新X和星Y其实就是C和D了,因为它这个这个我就不讲了,因为我们在前面讲课的时候已经讲的很清楚了,好现在这个就写完了,写完了过后呢,我们为了测试在这加两句话,我还是那句话啊,同学们注意听前面老师已经讲清楚了,特别说明,如果原来题里面没有get差,你也不要添加这个get差,明白了吗?好朋友们,我们运行一下,那现在呢,我先把这个先注销。
17:16
好不好,再来运行一下,跑起来,我们看看此时此刻能不能把它的乘积,还有它的商取出来,比如说十,还有一个50回车。成绩是5300.2完全的正确可以了。好,也就是说这样子呢,我们答案就OK了,我把这个题也给大家板书到这来就可以了,没问题啊,同学们,这是呢,我们的第二个题代码实现放这就可以了。好,上面也有分析。第三个题,同学们,我们再看第三个题,趁热答题,同样我们做分析和代码实现。那这道题它是怎么来玩的呢?好,我们有必要跟大家好好的说一说,讲一讲。首先我们先来阅读这个题,这个题是这样说的,他说请编写一个函数叫放,接收的是一个double h,函数的功能是干什么呢?是对变量H的值保留两位小数。
18:14
并对第三位进行四舍五入,注意不能用现成的函数哈。也就是说,他还举了一个例子,看一定要按这个案例来测试哦,他说假如H的值是8.34啊,32433,则函数返回的就是八点。三二为什么呢?是第三位的损四舍五入舍掉了,假如H的值是3.8.32533,那么返回的就应该是8.33,为什么是后面这个三呢?一位五进一位,注意部分源程序已经存在了program c文件中,而且要求不允许改变主函数,其他函数中的任何内容呢,也不允许改动,仅仅在放就是我们这个函数里面添加若干语句就可以实现。
19:05
这个规定死了的哈,就说你不能上来过后把这个令或者其他函数给修改了,那肯定是跑不起来的好吗?来,同学们,我们来玩一把。给大家一边讲一边分析,最后把代码放过来就可以了,来吧,好,这个呢,我也仍然先注销一把,没问题啊,同学们。现在呢,是我们第一套题的第三个题写到这了,Em。第一套零三。没问题吧,同学们,现在呢,我们把后缀进行一个简单的修改。把代码呢往这一放就可以了。好,同学们,首先看这个地方肯定要加新的东西进去。没有任何问题,第二个这个函数呢,呃,它没有识别,我们先把去掉吧,因为这个地方应该是从这引入来的,他们引进来,引进来我先跟我们编译器有有关系,因为我这道题呢,可能是以前的一套题。
20:01
好,这个信息主要是在这增加代码。这里增加代码,好,现在老师就要开始写代码了啊,诶,因为他在这个地方呢,已经把这个题说的非常的清楚了。而且要求也说的非常清楚,那没什么可说的,直接上代码。咱们直接上代码。怎么怎么升代码呢?来,我们一起来写一写。就是怎么做呢,我的思路这样子好跟上老师思路,那开始写了这个地方的思路,我先分析一下。分析思路。嗯,这样子,本题这个考点就是干什么呢,他就是要。要我们写一个算法,他要我们写一个算法干什么呢?对。对一个小数进行试。舍。五入的处理是这样子吧?那既然如此,我就这样想了,先干什么呢?先将原来的书。
21:08
先将这个原来的数干什么呢?它这个原来数这个值啊,咱们加上。注意听,加上药。保留。要保留。的胃上的。就是要保留位上的那个值的一半,就是要保留到保留到位,保留位的上一位,这样应该说保留位的。保留位的那个下一位吧,保留位的下一位。将原子加上要保留位的下。一位。的一半。全职的一半。值的值的一半。
22:00
一半。那这个听起来有点有点绕,我这样子给大家讲,大家就明白什么意思了,慢啊,比如说我们呃,原先是3.2,呃,比如说这样子的。比如这样一个值哈。那么我们加多少呢?我们就加0.005,就是你本身保留到这一位嘛,保留到在这一位呢,我在下一位在在他这个全子上再加0.05,那如果说它是五的话呢,就会进一位,如果他没有到五的话呢,就是保留在九这个位置是不是好,那明白这个道理,这个说完了,过下一步干什么呢?然后我们再对齐对加后。新值哈,我们说对新这个新的这个值呢,再加上一个嗯,啊应该是呃乘以100。100。乘乘以100过后呢,咱们再干什么呢?诶这就有点意思了,乘以乘以100过后咱们再求。
23:08
他的。他的伤。它的它的它的一个这个商商是多少呢?除以100。啊,这样子讲可能大家还是不明白,一会呢,我给大家举个例子,大家就一目了然了。各位,那现在呢,我就用代码给大家实现一下,实现一下大家注意听哈,那就开始写这样写了。你看我怎么写呢,首先我用一个no number,然后呢,H,它原先这个值呢,我就来加,等于0.005。为什么是0.005呢?因为我们不是讲了吗?因为你要保留到小数的第二位,那我就在它的下一位,再加他的全值的一半,因为这样子有什么好处,待会你们就看到,如果他超过这个五呢,加起来就会进一位,如果不到五呢,那最多叫它的第三位就是九。
24:02
对不对,好,然后下一步我要干什么事情呢?大家看我要这么处理一下哈。现在呢?我让这个H等于H乘以100。大家知道这是在干什么吗?哎,这样子呢,其实就是我们做了这样一件事情。就是把这个H呢乘了100付给他。成了100,那你那你想。你既然存了100,那就相当于说在原先基础上就扩扩大了100倍,那扩大一百倍过后呢,下一步我们把这个H付给这个number,这个就是,然后呢,对H求整。求整数。对不对,那也就是说乘完100过后呢,我们就拿到一个整数了,因为我是把这个H,把这个H付给这个number了,那number,呃,Number它是整数,所以他会把这个小数位的给你拿掉,比打个比方,比如说你,呃打个比方你你后面有有0.09,那么付给这个number的时候呢,他会把小数点给拿掉。
25:09
哎,我待会我们再看这个,就是对,这个是对求H求整数,H求整数功能,下一步我们就简单了,怎么写呢?同学们看咱们写H。诶,呃,然后再把它付给他吧,再把这个number付给他,哎,这这个整体这两句话就是对H求整数,这样做完了以后,下一步呢,H等于。H等于H除以100。除100好,最后呢,我们就一句话,H代码就写完了。那有些老师你这个代码有点看不懂,我们来试一下哈,比如说假如是这个数。假如我们传的是,嗯,我们来看一下验证一下,比如说我们传的是38.32433传进去他先加了一个0.05,那就是变成3.82。
26:02
933是不是,然后呢,对它乘以100。对,它乘100过后,是不是就变成了832.933,这个能看懂吗?好,然后然后再把这个number给到A,再把这个H给到这一个number。那么number因为它是一个long型,是个整数,所以它会把小数位全部给你省掉,就变成300,那832 832,再把832给到这个HH,现在就变成了什么呢?832.0这么一个float。然后再对它除以一个100,再除以100,不就是8.320000了吗。对不对,所以说他如果没有超过五,其实呢,相当于把后面的就省掉了。那如果说你超过了五,会有什么效果呢?再来看这个案例,比如说你这次传的是,呃,8.32533,那情况就不一样了,你看8.32533。
27:10
我加了一个0.05。同学们想,这个是不是就变成三了,这个变成零了呀。是不是再像那样推他最后结果就变成了8.330000,能理解了吗?那相当于是不是就。把这个五进了一位啊好,代码就这样分析就结束了,那同学们我们来试一下吧,Get char。两次哈。好,同学们看他首先呢,我把这个代码稍微整理一下。这边我们输入一个数,然后呢,输出它的原值是多少,然后再调这个function a传进去,传进去把这个A付给了HH,在这里面呢,进行了一系列的操作,是不是最后呢,返回了一个保留小数两位的一个值,45度的值,好同学们,我们来运行一下。
28:02
应该是没有任何问题的,跑起来。运行之。那运行起来过后呢,我们看效果哈,来走一个吧,我们就按他给的数据来测试,第一个数据他给的是嗯,8.32433。来看一下8.32433回车,同学们可以看到原始的值是这么多,然后它四舍五入,果呢把433去掉了。第一个是正确的,我们再来进行测试。第二个题。现在是第二个是8.32533回车,原始的值是这么多,然后保留掉小数的两位呢,五进一位变成8.330000。完事了,同学们。好,同学们,那关于我们第一套题的讲解呢,就说完,我仍然把这个结果哈跟大家板书到这边来。也就是说把这个流程放在这儿了。
29:01
这是我们第一套题。那最后我把第一套题呢,整体复制到我们的这个代码里面去,没问题吧。这是我们第一套题,然后呢,我把它直接放在我们的笔记中去。这样呢,便于我们今后的一个复习,对不对,好的,我把这个拿过来。笔记。这是我们的真题精讲。好,梳理一下。那我们第四章开始讲的是什么呢?从第四章我们讲的其实就是真题了。分析一下放这儿啊,同学们跟着我的思路,一定要认真的理解好,这里面讲的是全国计算机C语言历年真题。我给他来一个标题。那现在我们首先给大家说了一下,我们讲的时候有哪些题型对不对,这样子吧。我们说题型有这么多,而且呢,老师也专门说了,因为真题这个操作题比重比较大,可能呢,我们会在这个操作题上多讲,多讲几套。
30:05
其目的呢,就是能够让大家多看几道题,大家在考C语言二级的时候呢,会做到心中有数。好,题型说明。提醒。题型和授课授课安排。好,我把它翻过来,然后下面呢,我们是不是就讲了第一套题啊。非常简单,我们讲的是全国计算机第一套的这个操作题。放这儿吧,诶在这对不对。低头。然后我把这个图也截一下,很简单一张图。然后呢,具体的代码,具体的这个题啊。提的内容。第一套,第一套这个操作。操作题的一个分析和讲解。好,我呢给它来一个箭头就行了。
31:00
然后我把刚才我们讲的第一套题的分析,还有这个内容呢,给大家直接拿过来哈。在哪呢?嗯,实际上就是在。看一下。是不是在这啊,这个这一套好我复制一下。然后复制下来过后呢,为了好看,我就直接粘贴了。看这样粘贴可不可以把格式带上哈。应该是可以的。啊,这诶不行啊这样子。这样不行。这样子呢,它会乱,所以说我可能还是需要有一个表格来把这个,把它的大小圈在这里面啊,让他不要出去。嗯。怎么回事?好。咦?他为什么没有让我选?出现了啊,他应该让我选一个什么呀。选带不带格式才对呀。我重新插一下这个表格看一下。
32:05
耶,这个怎么回事儿呢?我再我再重新复制一下。复制哈。要插入到这个表格里面去。好,那这里没有格式的话就比较麻烦了。嗯。我看一下。这是我们哦哦,我明白了啊,他这个没有把它整体从这拷贝,那我从这拷贝一下。好,这样就就可以了,好的。那刚才呢,我们在拷贝的时候只拷了一部分。这样就可以了。这样这样进去过后,大家看起来也比较方便,你看怎么看哈,看第二题型,那下面这是我们第一套题的分析和讲解,这是它的,呃,第一个题填空啊,下面分析思路在这里哈。
33:01
第二个题呢是修改题,修改题呢,分析思路和代码在这里,第三个题是这个第三个题程序设计题,设计题,然后呢,这边是它的分析和它的代码,这都写的很清楚了。没问题,好,那关于第一道题呢,我们就给大家讲解到这里。
我来说两句