《全国计算机二级c语言上机考试题库.docx》由会员分享,可在线阅读,更多相关《全国计算机二级c语言上机考试题库.docx(132页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2006年9月上机考试题库说明:上机考试正式系统题库中共有50套题目,考生随机从中抽取一套 进行考试。例如,如果你考的是二级C语言上机考试,那么你输入准考 证号并确认后,机器将从正式题库的50套题中随机为你抽取一套题目(包括一道程序填空题(30分)、一道程序修改题(30分)、一道程序设 计题(40分)共3题)让你考试,如果3题都完全答对,那么你上机考试 的成绩就是满分100分。(注:一般来说,抽题时,填空题第1题和修改 题第1题和编程题第1题会对应同时出现,如此类推)以下包括50套题(填空题、改错题、编程题各50道题目)和答案一、填空题(程序填空题)1、给定程序中,函数ftin的功能是将a和b
2、所指的两个字符串转换成面值 相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下 数字字符。 例如,主函数中输入字符串:32486和12345,在主函数请在程序的下面线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#include#include#defineN 9 long ctod( char *s) long d=0;while(*s) if(isdigit( *s) /* * * * *(J * * * * * */d=d* 10+*s-_1 _;/*tound
3、*/_2_; return d;)long fiin( char *a, char *b) /*found*/return 3main() char slN,s2N;do printf(Input string si : ); gets(sl); while( strlen(s 1 )N );do printffInput string s2 : ); gets(s2); while( strlen(s2)N);printf(The result is: %ldn, fun(sl,s2);2、给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。=Ix3 + 3x5 + 5x7 +
4、 +(2x-l)x(2x + i)S = F +丁 + F + +(2x)2例如,当形参n的值为10时,函数返回:9.612558o请在程序的下 划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构! #include double fun(int n) int i; double s, t; /* * */ s=_l_; /* * * * *(J * * * * * */for(i=l; i= 2_; i+)t=2.0*i;/ * * * * * * * * * *(J * * * * * * *
5、* * * /s=s+(2.0*i-l)*(2.0*i+l)/_3_;) 一 return s;main() int n=-l;while(n0): ); scanf(%d,&n); printffnThe result is: %fn,fun(n);3、 给定程序中,函数fun的功能是:在3x4的矩阵中找出在行上最 大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。例如,有下列矩阵:12134781063597程序执行结果为:find: a22=9请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK.1.C中。 不得增
6、行或删行,也不得更改程序的结构!#include #defineM3#defineN4void fun(int (*a)N) int i=0,j,find=0,rmax,c,k;while( (iM) & (!find) rmax=ai0; c=0;for(j=l; jN; j+)if(rmaxaij) /*found*/rmax=aij; c= _1_ ;find=l; k=0;while(kM & find) /*(J * * * * * */if (k!=i & akc=rmax) find= _2_ ;k+;)i出find) printf(find: a%d%d=%dn,i,c,aic
7、);/ * * * * * * */_3_;)if(!find) printf(not found!n);)main()int xMN,i,j;printffEnter number for array:n);for(i=O; iM; i+)fdr(j=O; jN; j+) scanf(%d,&xij);printf(The array:n);fbr(i=O; iM; i+) for(j=O; jN; j+) printf(%3d,xij); printf(nn);)fun(x);4、给定程序中,函数fim的功能是:在形参ss所指字符串数组中,删除所 有串长超过k的字符串,函数返回所剩字符串的
8、个数。ss所指字符串数组 中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!#include #include #define N 5#define M 10int fiin(char (*ss)M, int k) int i,j=0,len;/*found*/fdr(i=0; i _1_; i+) len=strlen(ssi);/*tound*/if(len= _2_)/*nd*/strcpy(ssj+,_3_);)return j;main() c
9、har xNM=Beijing,Shanghai,Tianjing,Nanjing,Wuhan);int i,f;printf(nThe original stringnn);fbr(i=O;iN;i+)puts(xi); printf(n);f=fun(x,7);printffThe string witch length is less than or equal to 7 :n); fbr(i=0; if; i+) puts(xi);printf(n);5、给定程序中,函数firn的功能是根据形参i的值返回某个函数的值。当 调用正确时,程序输出:x 1=5.000000, x2=3.00
10、0000,xl*xl+xl *x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!#include double fl (double x) return x*x; double f2(double x, double y) return x*y; /* */_1_ fun(int i, double x, double y)if(i=D/ * * * * * * */return _2_(x);else/*nd*/return _3_(x, y); main()
11、 double xl=5, x2=3, r;r = fun(l, xl, x2);r += fun(2, xl, x2);printf(nxl=%f, x2=%f, x 1 *x 1+x 1 *x2=%fnn,x 1, x2, r);6、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3 门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名 的字典序(从小到大)排序。 请在程序的下划线处填入正确的内容 并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!#include #include stru
12、ct student long sno;char nameflO;float score3;);void fun(struct student a, int n)/ * * * * * * */_l_t;int i,j;/* nd*/for (i=0; i_2_; i+)for (j=i+l;j 0) t = ai; ai = aj; aj = t; )main() struct student s4= 10001,ZhangSan, 95, 80, 88,10002,LiSi, 85, 70, 78),10003,CaoKai, 75, 60, 88, 10004,FangFang, 90,
13、 82, 87);int i,j;printfifnnThe original data :nn);for (j=0; j4; j+) printf(nNo: %ld Name: %-8sScores: ,sj.sno,sj.name);for (i=0; i3; i+) printf(%6.2f , sj.scorei);printf(n);)fun(s, 4);printf(nnThe data after sorting :nn);for (j=0; j4; j+) printf(nNo: %ld Name: %-8sScores: ,sj.sno,sj.name);for (i=0;
14、i3; i+) printf(%6.2f , sj.scorei);printf(n);7、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均 值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放 在形参y所指数组中,在主函数中输出。例如,有 10个正数:46 30 32 40 6 17 45 15 48 26, 平均值为:30. 500000主函数中输出:46 32 40 45 48请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #def
15、ine N 10double fun(double x ,double *y) int i, j; double av;/*found*/av=_ 1 _;/*found*/for(i=0; iN; i+) av = av + 2_;for(i=j=0; iav) y3= xi;yj=-l;return av;main () int i; double xN,yN;for (i=0; i=0; i+) printf (,z%5. If , yi);printf(n);8、给定程序中,函数fim的功能是:将a所指4x3矩阵中第k行的元素与第 0行元素交换。例如,有下列矩阵:12345678910
16、1112若k为2,程序执行结果为:789456123101112请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #defineN3#defineM4/*tound*/void fun(int (*a)N, int _1_) int i,j,temp ;/* found */for(i = 0 ; i _2_ ; i+)temp=a0i;/* nd* */a0i=_3_;aki =temp ;)main() int xMN= 1,2,3,4,5,6,7,8,9,10
17、,11,12printf(The array before moving:nn);for(i=0; iM; i+) for(j=O; jN; j+) printf(%3d,xij);prints nn);fun(x,2);printffThe array after moving:nn);for(i=O; iM; i+) fbr(j=O; jN; j+) printf(%3d,xij); printf(nn);9、给定程序中,函数fUn的功能是:找出100999之间(含100和999) 所有整数中各位上数字之和为x (x为一正整数)的整数,然后输出;符合 条件的整数个数作为函数值返回。例如,当
18、x值为5时,100999之间各位上数字之和为5的整数有: 104、 113、 122、 131、 140、 203、 212、 221、 230、 302、 311、 320、 401、 410、500o共有15个。当x值为27时,各位数字之和为27的整数是:999。 只有1个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK.1.C中。不得增行或删行,也不得更改程序的结构!#include fun(int x) int n, si, s2, s3, t;n=0;t=100;/* * * * *(J * * * * * */wh
19、ile(t=_1_)/*tound*/sl=t%10; s2=(_2_)%10; s3=t/100;/*found*/iRs 1 +s2+s3= 3_) printf(%d V)r- n+;)t;)return n;main() int x=l;while(x0): ); scanf(%d,&x); printffnThe result is: %dn,fun(x);10、给定程序中,函数fim的功能是:将形参s所指字符串中的数字字符 转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如, 形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为:22。请在程序的下划
20、线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #include #include int fun(char *s) int sum=0;while(*s) /* u n d */ift isdigit(*s) sum+= *s- _1_ ;/*nd* */_2_;/* */return _3_;)main()char s81; int n;printf(nEnter a string:nn); gets(s);n=fun(s);printf(nThe result is: %
21、dnn,n);11、给定程序中,函数fim的功能是:把形参s所指字符串中最右边的n 个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的 长度小于n,则将整个字符串复制到形参t所指字符数组中。例如,形参s所指的字符串为:abcdefgh, n的值为5,程序执行后t所指字符数组 中的字符串应为:defgho请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!#include#include#defineN 80 void fun(char *s, int n, char *t)
22、 int len,i,j=0;len=strlen(s);/*nd*/if(n=len) strcpy(_1_);else /*found*/fbr(i=len-n; i=len-1; i+) tj+=_2_ ;/*(J * * * * * */tj= _3_ ;main()char sN,tN; int n;printf(Enter a string: );gets(s);printf( Enter n:); scanf(%d,&n);fun(s,n,t);printf(The string t: ); puts(t);12、给定程序中,函数fim的功能是:将形参s所指字符串中的所有数字 字
23、符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数 值返回。例如,s所指字符串为:asdl23fgh5#43df, 处理后新字符串为:123543asdfgh#df。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #include #include #include char *fun(char *s)int i, j, k, n; char *p, *t;n=strlen(s)+l;t=(char*)malloc(n*sizeofchar); p=(c
24、har*)malloc(n*sizeof(char); j=0; k=0;for(i=O; in; i+) if(isdigit(si) /*found*/P_l_=si;j+;)else tk=si; k+; for(i=O; i_2_; i+) pj+i= ti;pj+k=O;/* */return _3_;)main()char s80;printf(Please input: ); scanf(%s,s);printf(nThe result is: %sn,fun(s);13、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课 的成绩。函数fun的功能是将形参a所指结构体变量
25、中的数据赋给函数中 的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例 如:a所指变量中的学号、姓名、和三门课的成绩依次是:10001、 ZhangSan. 95、80、88,则修改后输出b中的数据应为:10002、LiSi、 95、80、88 o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include struct student long sno;char name 10;float score 3;;void fun(struct s
26、tudent a) struct student b; int i;/*tound*/b = _1_;b.sno = 10002;/*found*/strcpy(_2_, LiSi);printf(nThe data after modified :n);printf(nNo: %ld Name: %snScores: ,b.sno, b.name);/*(J * * * * * */for (i=0; i3; i+) printf(%6.2f , b._3_);printf(n);main() struct student s= 10001,ZhangSan, 95, 80, 88);int
27、 i;printfifnnThe original data :n);printf(nNo: %ld Name: %snScores: ,s.sno, s.name);for (i=0; i3; i+) printf(%6.2f , s.scorei);printf(n);fun(s);14、给定程序中,函数fim的功能是:在形参ss所指字符串数组中,将所 有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所 指字符串数组中共有N个字符串,且串长小于M。 请在程序的下划 线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得
28、增行或删行,也不得更改程序的结构!#include #include #define N 5 #define M 10 /*found*/ void fun(char (*ss) _1_, int k) int i=0 ;/*,ound*/while(i _2_) /*found*/ssik=_3_; i+; main() char xNM=Create,Modify,Sort,skip,Delete);int i;printf(nThe original stringnn);fbr(i=O;iN;i+)puts(xi); printfn);fun(x,4);printfi(nThe stri
29、ng after deleted :nn);for(i=0; iN; i+) puts(xi); printf(n);15、 给定程序中,函数fim的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为: 10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、 8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #include #define N 6typedef struct node int
30、data;struct node *next; NODE;void fiin(NODE *h)NODE *p, *q; int t;/* * * * *(J * * * * * */p=1;while (p) q = _2_ ;while (q) /*(J * * * * * */if (p-data _3_ q-data) t = p-data; p-data = q-data; q-data = t; q = q-next;,p = p-next;NODE *creatlist(int a) NODE *h,*p,*q;int i;h = (NODE *)malloc(sizeof(NOD
31、E);h-next = NULL;fbr(i=O; idata=ai;q-next = NULL;if (h-next = NULL) h-next = p = q;else p-next = q; p = q; )return h;)void outlist(NODE *h)NODE *p;p = h-next;if(p=NULL) printffThe list is NULL!n); else printf(nHead );do printf(-%d, p-data); p=p-next; while(p!=NULL);printf(-Endn);main() NODE *head;in
32、t aN= 0, 10, 4,2, 8, 6);head=creatlist(a);printf(nThe original list:n);outlist(head);fun(head);printf(nThe list after sorting :n);outlist(head);)16、 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数ftin的功能是将形参a所指结构体变量s中的数据进行修 改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 例如:a所指变量s中的学号、姓名、和三门课的成绩依次是:10001、 ZhangSan 95、80、88,修
33、改后输出t中的数据应为:10002、LiSi、 96、 81、 89o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #include struct student long sno;char name10;float score3;;/*,ound*/_1_ fiin(struct student *a)(血i;a-sno = 10002;strcpy(a-name, LiSi);/*tound*/for (i=0; i3; i+) _2_ += 1;/*nd*
34、/return _3_.;main() struct student s= 10001,ZhangSan, 95, 80, 88, *t;int i;printffnnThe original data An);printf(nNo: %ld Name: %snScores: ,s.sno, s.name);for (i=0; isno, t-name);for (i=0; iscorei);printf(n);17、给定程序中,函数firn的功能是:计算形参x所指数组中N个数的平 均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组 的前部,小于等于平均值的数据移至x所指数组的后
35、部,平均值作为函 数值返回,在主函数中输出平均值和移动后的数据。例如,有 10个正数:46 30 32 40 6 17 45 15 48 26, 平均值为:30.500000移动后的输出为:46 32 40 45 48 30 6 17 15 26请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #include #define N 10double fiin(double *x) int i, j; double s, av, yN;s=0;for(i=0; iN;
36、 i+) s=s+xi;/* nd* */av=_1_;fbr(i=j=O; iav)y_2_=xi; xi=-l; for(i=0; iN; i+)/*tound*/if( xi!=_3_) yj+=xi;fbr(i=O; iN; i+)xi = yi;return av;)main() int i; double xN;fbr(i=O; iN; i+) xi=rand()%50; printf(%4.0f ,xi); printfi(n);printf(nThe average is: %fn,fun(x);printf(nThe result :n,fun(x);fbr(i=O; iN;
37、 i+) printf(%5.0f ,xi);printfC*n);18、给定程序中,函数ftm的功能是:计算出形参s所指字符串中包含的 单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:This is a C language program., 函数的返回值为6。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include int fiin(char *s) int n=0, flag=0;while(*s!-0) if(*s!
38、- & flag=0) /*,ound*/_1; flag=l;/*found*/ if (*s=- ) flag= _2_ ;/ * * * * * * */3 ;return n;) main()char str81; int n;printf(nEnter a line text:n); gets(str);n=fun(str);printf(nThere are %d words in this text.nn,n);19、给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与 形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下 标值),未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符 串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出 正确的结果。注意:源