程序设计题 技巧及原理.docx
《程序设计题 技巧及原理.docx》由会员分享,可在线阅读,更多相关《程序设计题 技巧及原理.docx(7页珍藏版)》请在冰豆网上搜索。
![程序设计题 技巧及原理.docx](https://file1.bdocx.com/fileroot1/2022-11/16/9b155152-d7c6-421d-88f4-c946b810611c/9b155152-d7c6-421d-88f4-c946b810611c1.gif)
程序设计题技巧及原理
2010年3月考试专用
程序设计题解题技巧
1程序设计题的评分标准与方法
程序设计题的评分并不是根据考生所编写的程序进行评分的,而是根据考生所编写程序
的运行结果进行评分的。
这就是程序设计题必须要运行的原因。
那么,评分系统是如何知道考生所编写程序的运行结果的呢?
评分系统又是以哪些数据来判
定考生所编写的程序是否正确呢?
下面以一个例题进行说明。
由于全真的模拟系统不具有评分的功能,因此下面的实验以具有
评分功能的模拟考试系统进行讲解。
图1是一道程序设计题的题目,请大家认真阅读,理解
并记住题目的要求。
图1程序设计题题目
同时打开考生文件,如图2所示。
图2程序设计题运行前的考生文件夹
启动VC,打开程序设计题的程序,然后根据fun()函数将程序补充完整,如下所示:
voidfun(char*a)
{
inti=0,j=0;
charstr[100];
while(*(a+i)=='*')
{
str[j]=*(a+i);
i++;j++;
}
程序设计题解题技巧
while(*(a+i)!
='\0')
{
if(*(a+i)!
='*')
{
str[j]=*(a+i);
j++;
}
i++;
}
str[j]='\0';
for(i=0;i<=j;i++)
{
a[i]=str[i];
}
}
………………………………
将程序后,输入题目中的例子,获得如图3所示的结果,证明程序的编写时正确的,评
分的结果也是满分。
图3程序运行结果
我们再回头看一下考生文件夹,如图4所示。
图4程序设计题运行后的考生文件
考生文件夹中多了很多文件,其中有一些VC运行程序过程中产生的,可以不予理会。
但其中有一个“out.dat”文件,与程序设计题运行前就存在的“in.dat”文件似乎是对应的。
将这两个文件分别用VC打开(单击VC“文件”下拉菜单中的“打开”按钮),如图5所示。
注意:
用VC打开“in.dat”与“out.dat”文件时,“文件类型”处要选择“所有文件(*.*)”,
否则无法显示出这两个文件。
2010年3月考试专用
图5打开指定文件
“in.dat”与“out.dat”文件的内容如图6和图7所示,请仔细观察比较。
图6“in.dat”文件的内容
图7“out.dat”文件的内容
两个文件中都有10个字符串,而且“out.dat”文件中的10个字符串就是“in.dat”文件
中的10个字符串删去中间的和后缀的星号(*)后的结果,而这正是程序设计题题目的要求。
很显然,in.dat”文件中存放的就是测试数据,考试系统会把“in.dat”文件中的数组输入到
考生所编写的程序当中,然后将程序所输出的结果写到“out.dat”文件中(如图8所示)
评分系统就是根据“out.dat”文件中的数据进行评分。
如果一共有n组数据,那么每对1组,
就会得到(40/n)分。
程序设计题解题技巧
图8考试系统对数据的处理
2程序设计题的解题技巧(原理)
当搞清考试系统的评分原理后,再回过头看程序设计题的题目,就会发现其实这个题目
的处理很简单,根本不需要用程序来处理,直接手工就可以完成,而程序设计题中多数题目
的要求都很简单,都是可以通过手工处理完成。
由于评分系统并不会查看考生所编写的程序,
因此考生可以借助这个漏洞得出以下解题技巧:
(1)打开“in.dat”文件,获取测试数据。
(2)创建“out.dat”文件,并打开。
(3)由考生将测试数据按照题意进行处理,然后写入“out.dat”文件中并保存。
3程序设计题的解题技巧(方法步骤)
我们首先要做的,就是理解题意,搞清要对测试数据进行怎样的处理,这是非常重要的。
多数情况下,都是一些比较简单的处理。
然后,要打开“in.dat”文件,可以直接借助VC来打开,步骤如下:
(1)首先单击VC最上方的“文件”菜单,会弹出一个下拉菜单,然后再单击“打开”
按钮,如图9所示。
图9打开文件
(2)VC会弹出一个浏览窗,要用户选择要打开的文件,“in.dat”文件在考生文件夹中,
如图10所示。
可以单击图中划圈的按钮选择你的考生文件夹,注意千万不要找错地方。
同
时要注意的是,浏览窗中的“文件类型”处要选择“所有文件(*.*)”,否则无法显示出这
“in.dat”文件,这在前面已经提到过了。
2010年3月考试专用
图9“打开文件”浏览窗
(3)用鼠标选中“in.dat”文件后,单击浏览窗上的“打开”按钮,就可以了。
在打开“in.dat”文件后,我们就可以获得要处理的测试数据了。
接下来,就要创建“out.dat”
文件,用来保存处理后的数据。
考生文件中原来并没有“out.dat”文件,它是由程序在运行
的过程中自动创建的。
但我们可以借助VC来手动创建它步骤如下:
(1)单击VC最上方的“新建文本文件”按钮,即图10中划圈的按钮。
图10“新建文本文件”按钮
(2)随后,VC会创建一个空白的文本文件。
单击VC最上方的“文件”菜单,会弹出
一个下拉菜单,然后再单击“保存”按钮,VC会弹出一个浏览窗,如图11所示。
点击图中划圈的按钮来找到你的考生文件夹,然后在文件名一栏填入“out.dat”,在单击“保
存”按钮即可。
至此,“out.dat”文件创建成功。
打开你的考生文件夹,就会看到其中多了
一个“out.dat”文件,
程序设计题解题技巧
图11“保存文件”浏览窗
最后,将“in.dat”文件中的测试数据进行处理后,写入到“out.dat”文件中。
例如前面
的那道字符串处理的题目,前两个字符串分别是“****A*BC*DEF*G********”和
“**********LKJFHG****KHJ***SDFGH****KJKJ*J*K*K*J*****”,根据题意,处理后的
结果应为“****ABCDEFG”和“**********LKJFHGKHJSDFGHKJKJJKKJ”。
将其写入到
“out.dat”文件并保存(图12),然后让模拟系统评分(图13)。
图12将处理结果写入“out.dat”文件并保存
图13评分结果
评分结果显示得到了8分,而我们并没有编写程序。
因此,这一特殊解题技巧是可行的。
4程序设计题解题技巧的关键点
尽管这种特殊的解题技巧能够不用编程就解决多数的程序设计题,但并不意味着考生可
以完全不懂C语言。
因为评分系统对于答案的格式要求是非常严格的,有一点点于标准答
案不符的地方,就不能得分。
例如,前面的那个例子中,除了要细心地将数据写对外,还要
会判断两个字符串之间应该如何间隔,是用空格?
逗号?
还是回车?
前面的使用我们所使用
的是回车,但这并不是随意决定的。
我们首先来看一下编程题的完整程序:
#include
2010年3月考试专用
voidfun(char*a)
{
………………………………
}
main()
{
chars[81];
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81];
in=fopen("D:
\\Exam\\24010001\\in.dat","r");
out=fopen("D:
\\Exam\\24010001\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
程序中有一个fprintf()函数:
fprintf(out,"%s\n",s);
它负责将程序的处理结果输出到“out.dat”文件,因此它的输出格式就决定了答案的格
式。
我们用“回车”间隔两个字符串的原因就在于,fprintf函数中在输出每个字符串后,又
输出了一个回车(\n)。
所以如果要使用这一特殊的解题技巧来做程序设计题,一定要细心确认答案的格式,任
何一点错漏都会导致丢分。
程序设计题的特殊解题技巧是利用评分系统不查看源程序的漏洞而设计的,它的确能够
解决多数的程序设计题,但同时它也要求考生具有较强的程序阅读能力,从而确定答案的格
式。
任何一点错漏,都会导致丢分。
因此,如果在考试中能够用正常的方法来解题,就尽量不要使用特殊解题技巧,除非是
对程序设计题完全没有思路。
此外,为了能够顺利地使用特殊解题技巧,一定要熟练地掌握fscanf()函数和fprintf()
的输入输出的格式控制。