2012全国计算机二级C语言(C++)上机编程题技巧总结和答案

数据在写入out.dat时,必须以%c=%d\\n的形式输出,其中%c对应ch,即为h,%d对应的是函数的返回值,即为h在字符串中的个数为1。输出的结果为:

其它行依次类推 (6) 保存交卷

第七种类型: 字符串操作四,删除指定字符

1、 题库中对应题目编号:4、12、25、28、35、39、52、55、72、75、85、86 2、 考题举例:以第4题为例

(1) 题目要求:将ss所指字符串中所有下标为奇数位置上的字母转为大写,若该位置不是字母,

则不转换。该类型的题目不难但是必修认真,有耐心!

(2) NONO函数:该题中的NONO函数比较难理解,同学们只需将红色方框里面的语句读懂就行,

具体的将在第四步中介绍。

(3) 在fun函数中输入测试数据,编译,执行,该题函数返回void则无需return语句,出现下

图结果。

(4) 打开in.dat文件

fgets( tt, 50, rf )表示从in.dat中读入一个字符串给tt数组,如果不了解也不要紧,对做题没有太大的影响。

做题时候首先要知道字符的字符的小标是否是奇数,我们可以通过标注数字删除不符合的字符。以第一行为例,将奇数位置的字符改动就行,记住空格占一个字符,在做其它题目时候一定要小心 d s f f d s f d s l j f d s l f d s l j k f s d 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 (5) 打开out.dat文件,清空数据。 fprintf( wf, \将tt数组中的字符串修改后进行输出,即将下标是奇数位置的小写字符改为大写字母。

(6) 保存交卷

第八种类型: 结构体

1、 题库中对应题目编号:2、3、16、23、33、51、58、64、68、82、97、98、99 2、 考题举例:以第二题为例(备注第二题是该类型中最典型的例题)

(1) 题目要求:N名学生的数据已经通过主函数存放在s数组中,函数功能是:把指定分数范围

内的学生数据放在b所指的数组中,分数范围内的学生人数由函数返回。(注释:该题不仅仅考查题目中要求的内容,在程序段中有特殊的语句需要执行,所以需要特别注意!)

(2) main函数:该题没有NONO函数,因此以主函数为准。说明main函数:

1)在main函数之前定义了一个结构体STREC,里面有两个成员,分别

表示学号和成绩,该题中一定要认清操作的是学号还是成绩,特别是输出的时候,该类型的题目都拥有相同的考点。

2)在主函数中STREC s[N];定义了一个结构体类型的数组,长度为N,并且为其赋值16个

数据。STREC h[N],tt;FILE *out ;定义了另一个结构体数组h,和结构体变量tt,文件指针。在下图中已经用红色框住的部分需要明白。第一红框到第二个红框之间的部分可以不去理解,对做题没有影响。

3) n=fun( s,h,80,98 );最为关键,结合题目可以知道该句话的含义是:从结构体数组s中

找到80到98之间的所有数据放到结构体数组中。帅选的数据为:

总共8个,题目中说将分数范围内的人数返回,这样可以得知n的值为8 4)fprintf(out,\将n以%d的格式输出到out.dat中

5)为冒泡法排序,旨在将h中

的数据按照分数进行从小到大排序,如果不了解排序过程请参考“注意事项”,结构体数组h中的数据进行从小到大的操作后变为:

6) 表示将排序后h中的数据以4d%\\n的形式输出到

out.dat中,并且输出的是h[i].s成绩数据项。

(3) 在fun函数中输入测试数据,编译,执行,该题函数返回int则需return语句,出现下图结

果。执行结果中必须出现“Press any key to continue”字样才会生成out.dat文件,都则将不生成该文件。

(4) 打开out.dat(因为没有in.dat,所以无须打开它),清空里面的数据。

1)首先输出n的值,以%d\\n的形式进行输出:

2)其次将h排序后的第一个数据输出,以M\\n的形式输出,第一个数据位85,85的宽度为

2,但是输出中要求为4,所以必须在85前面加上2个空格。

3)将剩余数据全部输出:

(5) 保存交卷

第九种类型:链表类型

1、 题库中对应题目编号:22、80、84 2、 考题举例:以22为例进行讲解

(1) 题目要求:N名学生的成绩已经在主函数中放在一个带头结点的链表中,h指向链表的头结点,

函数功能是:找出学生的最高分,由函数值返回。(注释:返回值是最高分,不是数据整体)

(2) NONO函数:主要观察红框部分,具体解释将在下面介绍。

(3) 在fun函数中输入测试数据,编译,执行,该题函数返回double则需return语句,出现下

图结果。执行结果中必须出现“Press any key to continue”字样才会生成out.dat文

件,都则将不生成该文件。

(4) 打开in.dat文件。

for(j=0 ; j < N; j++) fscanf(in, \表示从in.dat中输入N个实型数给数组s中,总共有十行。从每行中找到最大值,然后在out.dat中进行输出。

(5) 打开out.dat文件。函数将返回的最大值放在变量max

中,然后将max以%6.1f\\n的格式进行输出,注意%6.1f表示数据的总宽度为6,小数点占1位,则应该对数据小数点后的第二位进行四舍五入操作。以第一行为例,最大值为91,则输出值为“ 91.0”,91.0前面加2个空格。

依次类推将每行中的最大值找出来进行输出即可,结果如上图所示。

(6) 保存交卷

第十种类型:数学问题二,素数

1. 考题中对应题目编号:20、21、62 2. 考题举例:以21为例

(1) 题目要求:将大于形参m且仅靠m的k个素数存放在xx所指的数组中。分析题目需要同

学们了解:什么是素数?素数就是只能被自身和1整除的数,最小的素数是2,例如4不是素数因为它能被2整除,5是素数,因为它只能被1和它自身整除。

(2) NONO函数:

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4