全国计算机等级考试C语言上机考试题库套5157.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《全国计算机等级考试C语言上机考试题库套5157.pdf》由会员分享,可在线阅读,更多相关《全国计算机等级考试C语言上机考试题库套5157.pdf(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2017 年全国计算机等级考试 C 语言上机考试题库 学生练习用第 41 套至第 60 套 第四十一套 1、程序填空 下列给定程序中,函数 fun 的功能是:将形参 s 所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。例如,若 s 所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!-#include#include#include char*fun(cha
2、r *s)int i,j,k,n;char *p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char);p=(char*)malloc(n*sizeof(char);j=0;k=0;for(i=0;i=a)&(si=A)&(si=Z)/*found*/tj=_1_;j+;else pk=si;k+;/*found*/for(i=0;i_2_;i+)tj+i=pi;/*found*/tj+k=_3_;return t;main()char s80;printf(Please input:);scanf(%s,s);printf(nThe result i
3、s:%sn,fun(s);-【参考答案】(1)si (2)k (3)0或 0【考点分析】本题考查:数组元素赋值操作;for 循环语句中循环变量的取值范围;字符串结束标识0。【解题思路】填空 1:将字符串 s 中所有字母元素赋给数组 t。填空 2:字符串中所有非字母元素放到字母元素后面,所以取值范围是 0k。填空 3:最后给字符串加入结束标识0。2、程序修改 下列给定程序中函数 fun 的功能是:将 s 所指字符串中最后一次出现的与 t1 所指字符串相同的子串替换成 t2 所指字符串,所形成的新串放在 w 所指的数组中。要求 t1 和 t2 所指字符串的长度相同。例如,当 s 所指字符串中的内容
4、为:abcdabfabc,t1 所指串中的内容为ab,t2 所指子串中的内容为99时,结果在 w 所指的数组中的内容应为abcdabf99c。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改的程序的结构!-#include#include void fun(char *s,char*t1,char*t2,char*w)char *p,*r,*a;strcpy(w,s);/*found*/while(w)p=w;r=t1;while(*r)/*found*/IF(*r=*p)r+;p+;else break;if(*r=0)a=w;
5、w+;r=t2;while(*r)*a=*r;a+;r+;main()char s100,t1100,t2100,w100;printf(nPlease enter string S:);scanf(%s,s);printf(nPlease enter substring t1:);scanf(%s,t1);printf(nPlease enter substring t2:);scanf(%s,t2);if(strlen(t1)=strlen(t2)fun(s,t1,t2,w);printf(nThe result is:%sn,w);else printf(nError:strlen(t1
6、)!=strlen(t2)n);-【参考答案】(1)while(*w)(2)if(*r=*p)【考点分析】本题考查:while 循环语句,C 语言中的关键字。【解题思路】(1)这里要判断的是值的真假,而不是地址,所以改为 while(*w)。(2)C 语言中关键字区分大小写,只需运行程序,就可以根据错误提示找到。3、程序设计 编写函数 fun,其功能是:将 s 所指字符串中 ASCII 值为奇数的字符删除,剩余字符形成的新串放在 t 所指数组中。例如,若 s 所指字符串中的内容为:ABCDEFG12345,其中字符 A 的 ASCII 码值为奇数,字符 1 的 ASCII 码值也为奇数,都应当
7、删除,其它依此类推。最后 t 所指的数组中的内容应是:BDF24。注意:部分源程序在文件 PROG1.C 中。请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。-#include#include void fun(char *s,char t)main()char s100,t100;void NONO();printf(nPlease enter string S:);scanf(%s,s);fun(s,t);printf(nThe result is:%sn,t);NONO();void NONO()/*本函数用于打开文件,输入数据,调用函
8、数,输出数据,关闭文件。*/char s100,t100;FILE*rf,*wf;int i;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i 10;i+)fscanf(rf,%s,s);fun(s,t);fprintf(wf,%sn,t);fclose(rf);fclose(wf);#include#include void fun(char *s,char t)main()char s100,t100;void NONO();printf(nPlease enter string S:);scanf(%s,s);fun(s,t);printf
9、(nThe result is:%sn,t);NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/char s100,t100;FILE*rf,*wf;int i;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i 10;i+)fscanf(rf,%s,s);fun(s,t);fprintf(wf,%sn,t);fclose(rf);fclose(wf);-【参考答案】void fun(char*s,char t)int i,j=0,n;n=strlen(s);for(i=0;in;i+)/*找出
10、 ASCII 码值为偶数的字符依次存入数组中*/if(si%2=0)tj=si;j+;tj=0;【考点分析】本题考查:ASCII 码值为奇数或偶数的判定方法,同时掌握删除字符的思想,即重新保留非删除字符。【解题思路】要删除 ASCII 码值为奇数的字符,也就是要保留 ASCII 码值为偶数的字符,由于最终是要求出剩余字符形成的新串,所以本题的算法是对原字符串从头到尾扫描,并找出 ASCII 码值为偶数的字符依次存入数组中。第四十二套 1、程序填空 给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi 和 a
11、tof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1.C 中。请勿改动 main 函数和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。-#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%fn,s,a,f)
12、;/*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:nn%s%d%fn,str,a1,f1);main()char a10=Hello!;int b=12345;double c=98.76;fun(a,b,c);-【参考答案】(1)FILE*(2)fclose(fp)(3)fp【解题思路】填空 1:从使用 fp=fopen(file1.txt,w)可知 fp 应该是文件类型指
13、针,因此本空因该填写 FILE*。填空 2:当对 fp 作打开操作的时候,并进行不同的操作前,应该对其关闭,因为在第一次打开时是对 fp 进行写操作,而在第二次打开后进行的是读操作,因此应该先对 fp 进行关闭,本空填 fclose(fp)。填空 3:fscanf()是把文本文件输出,因此本空只能填写 fp。2、程序修改 下列给定程序中,函数 fun 的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1.C
14、 中,不得增行或删行,也不得更改程序的结构。-#include#include#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=calloc(m,sizeof(STU);for(i=0;iN;i+)bi=ai;for(k=0;km;k+)for(i=j=0;ibj.s)j=i;/*found*/tk.num=bj.num;tk.s=bj.s;bj.s=0;return t;outresult
15、(STU a,FILE*pf)int i;for(i=0;i10)printf(nGive the number of the students who have better score:);scanf(%d,&m);pOrder=fun(a,m);printf(*THE RESULT*n);printf(The top:n);for(i=0;im;i+)printf(%s%dn,pOrderi.num,pOrderi.s);free(pOrder);-【参考答案】(1)t=calloc(m,sizeof(STU);(2)tk=bj;【解题思路】(1)calloc 应用于分配内存空间。调用形
16、式为(类型说明符*)calloc(n,size),功能:在内存动态存储区中分配 n 块长度为size字节的连续区域,函数的返回值为该区域的首地址,(类型说明符*)用于强制类型转换。calloc 函数与 malloc 函数的区别在于 calloc 函数一次可以分配 n 块区域。例如,ps=(struct stu*)calloc(2,sizeof(struct stu);,其中的sizeof(struct stu)是求 stu 的结构长度。该语句的意思是:按 stu 的长度分配两块连续区域,强制转换为 stu 类型,并把其首地址赋予指针变量 ps。在本题中不用考虑那么复杂,根据定义类型 STU b
17、N,*t;就可以看出*t=calloc(m,sizeof(STU)中的错误。(2)tk.num=bj.num 的错误旨在考查对结构体概念的掌握和灵活应用程度。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
18、 的花括号中填入所编写的若干语句。-#include#define N 80 int fun(int a,int n)void main()FILE*wf;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;i+)printf(%3d,ai);n=fun(a,n);printf(nnThe data after deleted:n);for(i=0;in;i+)printf(%3d,ai);printf(nn);/*/wf=fopen(out.dat,w
19、);for(i=0;in;i+)fprintf(wf,%3d,ai);fclose(wf);/*/-【参考答案】int fun(int a,int n)int i,j=1;for(i=1;in;i+)if(aj-1!=ai)/*若该数与前一个数不相同,则要保留*/aj+=ai;return j;/*返回不相同数的个数*/【解题思路】该程序的流程是:定义变量 i 和 j,其中 j 用于控制删除后剩下的数在数组中的下标,i 用于搜索原数组中的元素。j 始终是新数组中最后一个元素的下一个元素的下标,所以 if 语句中的条件是 aj-1!=ai,其中 aj-1就是新数组中的最后一个元素,若条件成立,则
20、表示出现了不同的值,所以 ai要保留到新数组中。注意本题中 i 和 j 的初值都要从 1 开始,该算法只能用于数组已排序的题目中。第四十三套 1、程序填空 下列给定程序中,函数 fun 的功能是:计算 NN 矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。例如,若 N3,有下列矩阵:首先累加 1、5、9,然后累加 3、5、7,函数返回值为 30。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!-#include#defin
21、e N 4 fun(int tN,int n)int i,sum;/*found*/_1_;for(i=0;in;i+)/*found*/sum+=_2_;for(i=0;in;i+)/*found*/sum+=tin-i-_3_;return sum;main()int tN=21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10,i,j;printf(nThe original data:n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,tij);printf(n);printf(The result is:%d,fun
22、(t,N);-【参考答案】(1)sum=0 (2)tii (3)1【考点分析】本题考查:变量初始化;NN 矩阵对角线下标如何表示;累加操作。【解题思路】填空 1:变量 sum 用来储存和结果,所以将其初始化为 0。填空 2:从题目中我们可以了解到,主对角线元素的行和列下标是相同的,所以应填入 tii。填空 3:对于反向对角线元素的行和列的下标,它们的关系是相加和为 n1,所以应填入 1。2、程序修改 下列给定程序中函数 fun 和 funx 的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。例如,若给 m 输入-100,n 输入 90,则函数求得的一个根为 2.000。请改正
23、程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1.C 中,不得增行或删行,也不得更改程序的结构。-#include#include double funx(double x)return(2*x*x*x-4*x*x+3*x-6);double fun(double m,double n)/*found*/int r;r=(m+n)/2;/*found*/while(fabs(n-m)0.001)if(funx(r)*funx(n)0.001)【考点分析】本题考查:变量数据类型;while 循环语句。【解题思路】(1)程序中我们会发现 r(mn)/2,而 m 和 n 都是
24、double 型的,并且根据题意可知,变量 r 需要定义为 double 型。(2)绝对误差不超过 0.001,所以循环条件应为 fabs(nm)0.001。3、程序设计 规定输入的字符串中只包含字母和*号。编写函数 fun,其功能是:除了字符串前导和尾部的*号外,将串中其它的*号全部删除。形参 h 已指向字符串中第一个字母,形参 p 指向字符串的中最后一个字母。在编写函数时,不得使用 C 语言提供的字符串函数。例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFG*。在编写函数时,不得使用 C 语言提供的字符串函数。注意:部分源程序在文件 PROG1
25、.C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。-#include void fun(char*a,char*h,char*p)main()char s81,*t,*f;void NONO();printf(Enter a string:n);gets(s);t=f=s;while(*t)t+;t-;while(*t=*)t-;while(*f=*)f+;fun(s,f,t);printf(The string after deleted:n);puts(s);NONO();void NONO()/*本函数用于打开文件,输入数据,调
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 语言 上机 考试 题库 5157
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内