2、编程题特殊做题方法
- 格式:docx
- 大小:520.24 KB
- 文档页数:7
全国计算机等级考试上机考试第三题(程序编写题)做题技巧
类型篇
声明:
1、本文所提供的方法仅供参考,如考生采取本文所述方法进行答题,由于个人原因造成的一切后果,均与本文作者无
关。
2、本文所述方法虽然经过历次考试验证有效可行,但并不保证在下次考试中仍然可以使用,所以,请务必在万不得以
的情况下采取本文所述方法。
3、本文所述方法由新视野教育独家研究,转载,请注明出处.
4、本篇以最新版《新视野全国计算机等级考试模拟考试》进行详解。
第一种类型:直接按题目要求修改out.dat文件,如《全国计算机等级考试上机考试第三题(程序编写题)做题技巧基
本步骤篇》,在这里就不再讲了。这是最基本的类型,也是最简单的类型。
第二类型:结合in.dat文件修改out.dat文件。
如《模拟系统》中第10套题:
我们用《基本步骤篇》中讲解的方法,一直做到打开out.dat文件为止,如下图:
到这里,从目前我们掌握的技巧来看,没有办法做,因为,我们仅从out文件没有办法知道N门课的成绩,我们就没
有办法得到这些课程成绩的平均分,所以,我们必须找到这N门课程的成绩。方法是,用打开out文件的方法打开in.dat
文件(与out.dat文件在同一个文件夹中)。
我们认真观察IN文件,我们就会发现很多数据,这就是我们要找到N门课程的成绩,我们再按题目要求对out文件进
行修改。
修改完成之后,保存,关掉所有已经打开的文件,就可以了。
(注意此题,既有in文件,程序中也有数据,但是,必须要结合in文件进行修改,只有在没有in文件的情况下,才去
程序中找数据)、(注意,x的值为in文件中每一行的最后一个数据。从NONO函数中的 for(i = 0 ; i < 10 ; i++)这条语句
可以看出,每个数组只有10个元素,而in文件中有每一行有11个元素)
第三种类型:无法按第一种类型做,也没有in文件,这时,需要去程序中找相关数据。
如《模拟系统》中第20套题:
同样,我们按《基本步骤篇》中的步骤,一直做到打开out文件为止。
大家看到out文件之后,会发现,这是一个没有任何规律的数字,我们把-858993460删了。这时,大家首先想到的自
然是去找in文件,但是,大家会发现,这个题目根本没有in文件。根据题目的意思,这个题目要按我们这个方法做,
我们必须要知道的数据:所有学生的成绩。我们来看程序部分:
#include
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun( STREC *a, STREC *b )
{
}
main()
{ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h[N];
int i,n;FILE *out ;
n=fun( s,h );
printf("The %d lowest score :\n",n);
for(i=0;i
printf("\n");
out = fopen("H:\\k01\\24000101\\out.dat","w") ;
fprintf(out, "%d\n",n);
for(i=0;i
fclose(out);
}
通过这个程序,再结合题目中的“N名学生的数据已在主函数中放入结构体数组s中”,我们不难发现,学生的成绩就
是:
{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}
到目前为止,我们需要的数据所有学生的成绩已经找到了,我们就可以往out文件中写入内容了。可是,我们写什么
内容到out文件中呢?
到这里,就对我们C语言知识的一些基本功有一定的要求了。在这个地方,大家要记住一定,out文件里的内容,按正
常做题方法来看,肯定是由程序实现书写的,只是,我们这个办法,由我们自己代替了程序的工作,我们自己就必须
要遵守程序的一些规则。程序实现书写内容到文件当中,自然就是fprintf语句,所以,大家只要去程序中,只要看到
fprintf语句,说明fprintf语句后面的输出内容都是要写入到out文件当中去的(我尽量讲得详细,但是,这里仍然不好
理解,希望大家认真看,多看两次,能理解上面说的是什么)。回到这个题:
第一个:fprintf(out,"%d\n",n);这条语句是需要输出一个n的值到out文件当中, n=fun( s,h );即n就是函数的返回值,
根据题目的意思“函数返回分数最底的学生人数”,我们数一下,最底分数为64分,共有4人,所以n的值为4,所
以,我们首先在out文件当中书写一个4,由于有\n,所以,还需要回车一下。
第二个:fprintf(out,"%4d\n",h[i].s); h[i].s就是学生的最底分数,注意输出的时候4d%(具体什么意思,自己去看书),将
学生的最底分数按4d%的格式写入到out文件中,注意\n,说明每一个分数完了都要换行,包括最后一个。
接着往下看,再也没有fprintf语句,说明,已经完了,保存,得分。
第四种类型:没有in文件,程序中也没有相关数据,那么他的数据就在程序的运行窗口。
如《模拟系统》中第100套题:
同样,我们按《基本步骤篇》中的步骤,一直做到打开out文件为止。
同里,我们把:后面所有的内容都删除掉(包括:与-之间的两个空格)。我们要做这个题,必须要知道所有的人年龄,我
们发现,没有in文件,程序中也没有给出相关的数据,其实,我们再运行一下程序,得到黑色的运行窗口,大家就会
发现所有人的年龄。
这时,我们只需要数0-9之间有多少,10-19之间有多少。。。。就行了。我们来做一个,0-9之间,共有2人,于是,可
能很多同学就直接这么写了: 0--- 9 :2。这是不对的,同样,大家一定要看清楚输入格式!程序中有这么一条语
句:fprintf(wf, "%4d---%4d :%4d\n", i*10, i*10+9, d[i]) 大家注意看,按输入格式讲的知识,我们知道,空格必须要原
样输出的,看4d%,我们知道,必须有三个空格,所以,:与2之间,应该是3个空格!!!
第五种类型:没有out文件。由于我们没有写代码,所以,可能部分程序没办法正常运行,造成就没有out文件(out
文件不是本来就有的,他是在运行的了程序之后才生成的),这种时候,就需要我们手动建立一个out文件,建立方法
是:
1、 如果说有in文件,复制一下in文件,然后在同一个文件夹下面粘贴,然后重命名为out就可以了。
2、 如果说没有in文件,我们在考生文件夹的空白处,单击右健,选择新健,选择文本文档,然后对这个新健的文件
重命名为out.dat(注意,必须修改文件的后缀名。文件原名为 新建文本文档.txt,我们必须全部删掉,然后写上
out.dat。如果说你看不到.txt,请参照《特殊类型篇》)