《IT认证2012年计算机二级C语言上机题及答案汇总50套.doc》由会员分享,可在线阅读,更多相关《IT认证2012年计算机二级C语言上机题及答案汇总50套.doc(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、优质文本二级 C 语言上机预测题目录 一、程序填空题. 1二、程序修改题. 13 三、程序编写题. 24 参考答案. 34优质文本优质文本二级 C 语言上机考试复习资料,共有 50 套题目/*found*/aki=akN-i-1= 3 ;优质文本优质文本一、程序填空题1、给定程序中,函数 fun 的功能是:在任意给定的 9 个正整数中找出按升序排列时处于中间的数,将原数据序 列中比该中间数小的数用该中间数替换,位置不变,在主 函数中输出处理后的数据序列,并将中间数作为函数值返 回。例如,有 9 个正整数:1572387582145按升序排列时的中间数为:8处理后主函数中输出的数列为:88823
2、87882145请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#define N9 int fun(intx)inti,j,k,t,mid,bN; for(i=0;iN;i+) bi=xi; for(i=0;i=N/2;i+)k=i;for(j=i+1;jbj)k=j;if(k != i )/*found*/t=bi; bi= 1_ ; bk=t;/*found*/mid=b 2 ;for(i=0; iN; i+)/*found*/if(xi 3 mid) x
3、i=mid;returnmid;main()inti, xN=1,5,7,23,87,5,8,21,45;for(i=0; iN; i+)printf(%d ,xi);printf(nThe mid data is: %dn,fun(x); for(i=0; iN; i+)printf(%d ,xi); printf(n);1232、给定程序中,函数 fun 的功能是建立一个 NN456的矩阵。 矩阵元素的构成规律是:最外层元素的值全部789 计算结果为为 1;从外向内第 2 层元素的值全部为 2;第 3 层元素的100值全部为 3,依次类推。例如,假设 N=5,生成的矩阵为:65011111
4、1014912221请在程序的下划线处填入正main() intxNN=0,i,j;fun(x);printf(nThe result is:n);for(i=0; iN; i+)for(j=0; jN; j+)printf(%3d,xij);printf(n);3、给定程序中,函数 fun 的功能是: 将 s 所指字符串 中的所有数字字符移到所有非数字字符之后,并保持数字 字符串和非数字字符串原有的先后次序。例如,形参 s 所 指的字符串为: def35adh3kjsdf7 。 执 行 结 果 为 : defadhkjsdf3537。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出
5、正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#includevoid fun(char*s)inti, j=0, k=0;chart180, t280;for(i=0; si!=0; i+)if(si=0 & si=9)/*found*/t2j=si; 1 _;elset1k+=si;t2j=0;t1k=0;/*found*/for(i=0; ik; i+) 2 ;/*found*/for(i=0; i 3_ ; i+)sk+i=t2i;main()chars80=def35adh3kjsdf7;printf(nThe origi
6、nal string is :%sn,s);fun(s);printf(nThe result is :%sn,s);4、给定程序中,函数 fun 的功能是:有 NN 矩阵, 以主对角线为对称线,对称元素相加并将结果存放在左下 三角元素中,右上三角元素置为 0。例如,假设 N=3,有下 列矩阵:优质文本优质文本1232112221除,使程序得出正确的结果。确的内容并把下划线删优质文本11111请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include#defineN7/
7、*found*/void fun(int(*a) 1 ) inti,j,k,m;if(N%2=0) m=N/2 ;elsem=N/2+1;for(i=0; im; i+) /*found*/for(j= 2 ; jN-i; j+)aij=aN-i-1j=i+1;for(k=i+1; kN-i; k+)注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN4/*found*/void fun(int(*t) 1 )inti, j;for(i=1; iN; i+)for(j=0; ji; j+)/*found*/ 2_ =t
8、ij+tji;/*found*/ 3_ =0;main()优质文本优质文本 int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j;printf(nThe original array:n);for(i=0; iN; i+)for(j=0; jN; j+)printf(%2d,tij);printf(n);fun(t);printf(nThe result is:n);for(i=0; iN; i+)for(j=0; jN; j+)printf(%2d,tij);printf(n);5、给定程序中,函数 fun 的功能是:对形参
9、 s 所指main( )STUstd= 1,Zhanghua,M,1961,10,8,76.5,78.0,82.0 ;printf(nA student data:n);/*found*/show( _3 _);7、给定程序中,函数 fun 的功能是:计算 NN 矩阵 的主对角线元素和反向对角线元素之和,并作为函数值返 回。注意:要求先累加主对角线元素中的值,然后累加反 向对角线元素中的值。例如,假设 N=3,有以下矩阵:123456789fun 函数首先累加 1、5、9,然后累加 3、5、7,函数的返回值为 30。请在程序的下划线处填入正确的内容并把下划线删优质文本字符串中下标为奇数的字符按
10、 ASCII 码大小递增排序,并 将排序后下标为奇数的字符取出,存入形参 p 所指字符数 组中,形成一个新串。例如,形参 s 所指的字符串为:baawrskjghzlicda,执 行后 p 所指字符数组中的字符串应为:aachjlsw。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include void fun(char *s, char *p) int i, j, n, x, t;n=0;for(i=0; si!=0; i+)n+;for(i=1; in-2; i=i+
11、2) /*found*/ 1 ;/*found*/for(j= 2 +2 ; jsj) t=j;if(t!=i)x=si; si=st; st=x; for(i=1,j=0; in; i=i+2, j+)pj=si;/*found*/pj= 3_ ;main()chars80=baawrskjghzlicda, p50; printf(nThe original string is :%sn,s); fun(s,p);printf(nThe result is :%sn,p);6、程序通过定义并赋初值的方式,利用结构体变量 存储了一名学生的信息。函数 fun 的功能是输出这位学生 的信息。请在
12、程序的下划线处填入正确的内容并把下划线删 除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include typedef struct int num;charname9;charsex;struct intyear,month,day ; birthday;floatscore3;STU;/*found*/void show(STU _1 _) int i;printf(n%d %s %c %d-%d-%d, tt.num, tt.name, tt.sex, tt.birthday.year,tt.birthday.
13、month,tt.birthday.day);for(i=0; i3; i+)/*found*/printf(%5.1f, 2_ );printf(n);除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN4 fun(inttN, intn)inti, 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,1
14、3,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(t,N);8、给定程序中,函数 fun 的功能是:计算形参 x 所 指数组中 N 个数的平均值规定所有数均为正数,作为 函数值返回;并将大于平均值的数放在形参 y 所指数组中, 在主函数中输出。例如,有 10 个正数:4630324061745154826,平均值为:30.5000
15、00主函数中输出:4632404548请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include #include #defineN10double fun(doublex,double*y) inti,j;doubleav;/*found*/av= 1 ;/*found*/for(i=0; iN; i+)av = av + 2 ;for(i=j=0; iav)y 3 = xi;yj=-1;returnav;main()inti;doublexN=46,30,32,40,
16、6,17,45,15,48,26;doubleyN;for(i=0; i=0; i+)printf(%5.0f ,yi);printf(n);9、给定程序中,函数 fun 的功能是:计算形参 x 所/*found*/if( xi!= 3 ) yj+=xi;for(i=0; iN; i+)xi = yi;returnav;main()inti;doublexN=优质文本指数组中 N 个数的平均值规定所有数均为正数,将所 指数组中小于平均值的数据移至数组的前部,大于等于平 均值的数据移至 x 所指数组的后部,平均值作为函数值返 回,在主函数中输出平均值和移动后的数据。例如,有 10 个正数:463
17、032406174515 48 26,平均值为:30.500000移动后的输出为:30617152646324045 48请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include #include #defineN10 double fun(double*x) int i, j; double av, yN;av=0;/*found*/for(i=0; iN; i+)av += 1 ;for(i=j=0; iN; i+)if( xiav )/*found*/yj=xi;
18、 xi=-1; 2 ;i=0;while(iN)if( xi!= -1 ) yj+=xi;/*found*/_3 ;for(i=0; iN; i+)xi = yi;returnav;main() int i; double xN;for(i=0; iN; i+) xi=rand()%50; printf(%4.0f ,xi);printf(n);printf(nThe average is: %fn,fun(x);printf(nThe result :n,fun(x);for(i=0; iN; i+)printf(%5.0f ,xi);printf(n);10、给定程序中,函数 fun 的功
19、能是:计算形参 x 所 指数组中 N 个数的平均值规定所有数均为正数,将所 指数组中大于平均值的数据移至数组的前部,小于等于平 均值的数据移至 x 所指数组的后部,平均值作为函数值返 回,在主函数中输出平均值和移动后的数据。例如,有 10 个正数:463032406174515 48 26,平均值为:30.500000移动后的输出为:46324045483061715 26请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#include #include #defineN10
20、 double fun(double*x) int i, j; double s, av, yN;s=0;for(i=0; iN; i+)s=s+xi;/*found*/av= 1 ;for(i=j=0; iN; i+)46,30,32,40,6,17,45,15,48,26;for(i=0; iN; i+) printf(%4.0f ,xi);printf(n);printf(nThe average is: %fn,fun(x);printf(nThe result :n,fun(x);for(i=0; iN; i+)printf(%5.0f ,xi);printf(n);11、函数 fu
21、n 的功能是:把形参 a 所指数组中的奇数 按原顺序依次存放到 a0、a1、a2、中,把偶数从 数组中删除,奇数个数通过函数值返回。例如:假设 a 所指 数组中的数据最初排列为:9、1、4、2、3、6、5、8、7, 删除偶数后 a 所指数组中的数据为:9、1、3、5、7,返 回值为 5。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN9int fun(inta, intn)inti,j;j = 0;for (i=0; in; i+)/*found
22、*/if (ai%2= 1_ )/*found*/aj = ai; 2_;/*found*/return _3 _;main()intbN=9,1,4,2,3,6,5,8,7, i, n;printf(nThe original data:n);for (i=0; iN; i+)printf(%4d , bi);printf(n);n = fun(b, N);printf(nThe number of odd: %d n, n);printf(nThe odd number:n);for (i=0; in; i+)printf(%4d , bi);printf(n);12、给定程序中,函数 f
23、un 的功能是:求 ss 所指字符 串数组中长度最短的字符串所在的行下标,作为函数值返 回,并把其串长放在形参 n 所指变量中。ss 所指字符串数 组中共有 M 个字符串,且串长N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#include#defineM5#defineN20int fun(char(*ss)N, int*n)inti, k=0, len= N;/*found*/for(i=0; iav )/*found*/y 2 =xi; xi=-1;
24、for(i=0; iN; i+)if(len 2_ *n=len;k=i;*n)优质文本优质文本/*found*/return( 3 );main()char ssMN=shanghai,guangzhou,beijing,tianjing,chongqing;intn,k,i;printf(nThe original strings are :n); for(i=0;iM;i+)puts(ssi); k=fun(ss,&n);printf(nThe length of shortest string is :%dn,n);printf(nThe shortest string is :%sn
25、,ssk);13、人员的记录由编号和出生年、月、日组成,N 名 人员的数据已在主函数中存入结构体数组 std 中。函数 fun 的功能是:找出指定出生年份的人员,将其数据放在形参 k 所指的数组中,由主函数输出,同时由函数值返回满足 指定条件的人数。请在程序的下划线处填入正确的内容并把下划线删 除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN8 typedefstructintnum;intyear,month,day ;STU;int fun(STU*std, STU*k, intyea
26、r)inti,n=0;for (i=0; iN; i+)/*found*/if( 1 =year)/*found*/kn+= 2 ;/*found*/return ( _3 _);main()STUstdN= 1,1984,2,15,2,1983,9,21,3,1984,9,1,4,1983,7,15,5,1985,9,28,6,1982,11,15,7,1982,6,22,8,1984,8,19;STUkN; int i,n,year; printf(Enter a year :);scanf(%d,&year); n=fun(std,k,year);if(n=0)printf(nNo pe
27、rson was born in %d n,year);elseprintf(nThese persons were born in %d n,year);for(i=0; in; i+)printf(%d%d-%d-%dn,ki.num,ki.year,ki.month,ki.day);14、函数 fun 的功能是:将形参 a 所指数组中的前半 局部元素中的值和后半局部元素中的值对换。形参 n 中存 放数组中数据的个数,假设 n 为奇数,那么中间的元素不动。 例如:假设 a 所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,那么调换后为:6、7、8、9、5、1、2、3、4。 请在程
28、序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN9void fun(inta, intn)inti, t, p;/*found*/p = (n%2=0)?n/2:n/2+ 1 ;for (i=0; in/2; i+)t=ai;/*found*/ai = ap+ _2 _;/*found*/ 3 = t;main()intbN=1,2,3,4,5,6,7,8,9, i;printf(nThe original data:n);for (i=0; iN;
29、i+)printf(%4d , bi);printf(n);fun(b, N);printf(nThe data after moving:n); for (i=0; iN; i+)printf(%4d , bi); printf(n);15、给定程序中,函数 fun 的功能是将形参给定的字符 串、整数、浮点数写到文本文件中,再用字符方式从此文 本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确嶄绸果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构!#includevoid fun(char*s,
30、 inta, doublef)/*found*/ 1_ fp;charch;fp = fopen(, w); fprintf(fp, %s %d %fn, s, a, f); fclose(fp);fp = fopen(, r); printf(nThe result :nn); ch = fgetc(fp);/*found*/while (!feof( 2 ) /*found*/putchar( 3_); ch = fgetc(fp);putchar(n);fclose(fp);main() chara10=Hello!;intb=12345;doublec= 98.76;fun(a,b,c
31、);16、给定程序中,函数 fun 的功能是:找出 NN 矩 阵中每列元素中的最大值,并按顺序依次存放于形参 b 所 指的一维数组中。请在程序的下划线处填入正确的内容并把下划线删 除, 使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#include#defineN4void fun(int(*a)N, int*b) inti,j;for(i=0; iN; i+) /*found*/bi= 1_;for(j=1; jN; j+)/*found*/if(bi 2 aji) bi=aji;main()int xNN= 12,5,
32、8,7,6,1,9,3,1,2,3,4,2,8,4,3 ,yN,i,j;printf(nThe matrix :n);优质文本优质文本for(i=0;iN; i+)for(j=0;jN; j+) printf(%4d,xij);printf(n);/*found*/fun( 3 );printf(nThe result is:);for(i=0; iN; i+)printf(%3d,yi);printf(n);17、给定程序中,函数 fun 的功能是:统计形参 s 所 指字符串中数字字符出现的次数,并存放在形参 t 所指的 变量中,最后在主函数中输出。例如,形参 s 所指的字符 串为:abcd
33、ef35adgh3kjsdf7。输出结果为:4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构!#includevoid fun(char*s, int*t)int i, n;n=0;/*found*/for(i=0; _1 !=0; i+)/*found*/if(si=0&si= 2 ) n+;/*found*/ _3 ;main()chars80=abcdef35adgh3kjsdf7;int t;printf(nThe original string is :%sn,s);fun(s,&t);printf(nThe result is :%dn,t);18、函数 fun 的功能是:把形参 a 所指数组中的最小 值放在元素 a0中,接着把形参 a 所指数组中的最大值放 在 a1元素中;再把 a 所指数组元素中的次小值放在 a2 中,把 a 所指数组元素中的次大值放在 a3;其余以此类 推。例如:假设 a 所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;那么按规那么移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参 n 中存
限制150内