【计算机类职业资格】全国计算机等级考试二级C语言操作题5+2016年及答案解析.doc

上传人:amazingpat195 文档编号:1329689 上传时间:2019-10-17 格式:DOC 页数:3 大小:33KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C语言操作题5+2016年及答案解析.doc_第1页
第1页 / 共3页
【计算机类职业资格】全国计算机等级考试二级C语言操作题5+2016年及答案解析.doc_第2页
第2页 / 共3页
【计算机类职业资格】全国计算机等级考试二级C语言操作题5+2016年及答案解析.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、全国计算机等级考试二级 C 语言操作题 5+2016 年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi 和 atof 将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include void fun(char *s, int a, d

2、ouble f) /*found*/ _1_ fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(“file1.txt“, “w“); fprintf(fp, “%s %d %f/n“, s, a, f); /*found*/ _2_ ; fp = fopen(“file1.txt“, “r“); /*found*/ fscanf(_3_,“%s%s%s“, str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); printf(“/nThe re

3、sult :/n/n%s %d %f/n“, str, a1, f1); main() char a10=“Hello!“; int b=12345; double c= 98.76; fun(a,b,c); (分数:10.00)_2.给定程序 MODI1.C 中函数 fun 的功能是: 对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程

4、序: #include #include #include #define N 10 typedef struct ss char num10; int s; STU; STU *fun(STU a, int m) STU bN, *t; int i,j,k; /*found*/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i for(k=0; k for(i=j=0; i if(bi.s bj.s) j=i; /*found*/ t(k)=b(j); bj.s=0; return t; outresult(STU a, FILE *pf) int i; f

5、or(i=0; i fprintf(pf,“No = %s Mark = %d/n“, ai.num,ai.s); fprintf(pf,“/n/n“); main() STU aN= “A01“,81,“A02“,89,“A03“,66,“A04“,87,“A05“,77, “A06“,90,“A07“,79,“A08“,61,“A09“,80,“A10“,71 ; STU *pOrder; int i, m; printf(“* The Original data */n“); outresult(a, stdout); printf(“/nGive the number of the s

6、tudents who have better score: “); scanf(“%d“, while( m10 ) printf(“/nGive the number of the students who have better score: “); scanf(“%d“, pOrder=fun(a,m); printf(“* THE RESULT */n“); printf(“The top :/n“); for(i=0; i printf(“ %s %d/n“,pOrderi.num , pOrderi.s); free(pOrder); (分数:10.00)_3.请编写函数 fun

7、, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容, 仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #include #define N 80 int fun(int a, int n) main() int aN=2,

8、2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20; printf(“The original data :/n“); for(i=0; in=fun(a,n); printf(“/n/nThe data after deleted :/n“); for(i=0;i(分数:10.00)_全国计算机等级考试二级 C 语言操作题 5+2016 年答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi 和 atof

9、 将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include void fun(char *s, int a, double f) /*found*/ _1_ fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(“file1.txt“, “w“); fprintf(fp, “%s %d %f/n“, s

10、, a, f); /*found*/ _2_ ; fp = fopen(“file1.txt“, “r“); /*found*/ fscanf(_3_,“%s%s%s“, str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); printf(“/nThe result :/n/n%s %d %f/n“, str, a1, f1); main() char a10=“Hello!“; int b=12345; double c= 98.76; fun(a,b,c); (分数:10.00)_正确答案:()解析:解题思路: 本题

11、是考察先把给定的数据写入到文本文件中,再从该文件读出并转换成相应的整数、浮点数显示在屏幕上。 第一处:定义文本文件类型变量,所以应填:FILE *。 第二处:关闭刚写入的文件,所以应填:fclose(fp)。 第三处:从文件中读出数据,所以应填:fp。2.给定程序 MODI1.C 中函数 fun 的功能是: 对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程

12、序的结构! 给定源程序: #include #include #include #define N 10 typedef struct ss char num10; int s; STU; STU *fun(STU a, int m) STU bN, *t; int i,j,k; /*found*/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i for(k=0; k for(i=j=0; i if(bi.s bj.s) j=i; /*found*/ t(k)=b(j); bj.s=0; return t; outresult(STU a, FILE *pf

13、) int i; for(i=0; i fprintf(pf,“No = %s Mark = %d/n“, ai.num,ai.s); fprintf(pf,“/n/n“); main() STU aN= “A01“,81,“A02“,89,“A03“,66,“A04“,87,“A05“,77, “A06“,90,“A07“,79,“A08“,61,“A09“,80,“A10“,71 ; STU *pOrder; int i, m; printf(“* The Original data */n“); outresult(a, stdout); printf(“/nGive the numbe

14、r of the students who have better score: “); scanf(“%d“, while( m10 ) printf(“/nGive the number of the students who have better score: “); scanf(“%d“, pOrder=fun(a,m); printf(“* THE RESULT */n“); printf(“The top :/n“); for(i=0; i printf(“ %s %d/n“,pOrderi.num , pOrderi.s); free(pOrder); (分数:10.00)_正

15、确答案:()解析:解题思路: 第一处: 语句最后缺少分号。 第二处: 应该使用方括号,而不是圆括号。像此类,使用编译,即可发现。3.请编写函数 fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容, 仅在函数 fun 的花括号中填入你编

16、写的若干语句。 给定源程序: #include #define N 80 int fun(int a, int n) main() int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20; printf(“The original data :/n“); for(i=0; in=fun(a,n); printf(“/n/nThe data after deleted :/n“); for(i=0;i(分数:10.00)_正确答案:(int fun(int a, int n) int i, j = 1, k = a0 ; for(i = 1 ; i n ; i+) if(k != ai) aj+=ai ; k = ai ; aj = 0 ; return j ; )解析:解题思路: 本题是删除已排序过数组中的相同数。 1. 取出数组中的第 1 个数存放在临时变量 k中,再利用 for 循环来依次判断所有的数。 2. 如果取出的数和 k 相比,如果不相同,则仍存放在原数组中,其中存放的位置由 j 来控制,接着把这个数重新存入 k。如果相同,则取下一数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1