《二级C语言上机考试.docx》由会员分享,可在线阅读,更多相关《二级C语言上机考试.docx(124页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、二级C语言上机考试,共有50套题目一、程序填空题1、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处 于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输 出处理后的数据序列,并将11间数作为函数值返回。例如,有9个正整数:1 5 7 23 87 5 8 21 45按升序排列时的中间数为:8处理后主函数中输出的数列为:8 8 8 23 87 8 请在程序的下划线处填入正确的内容并把下划线删除, 注意:源程序存放在考生文件夹下的BLANK1.C中。8 21 45使程序得出正确的结果。#include#define int fun(int不得增
2、行或删行,也不得更改程序的结构! N 9 x) int i,j,k,t,mid,bN;for(i=0;iN;i+) bi=xi;for(i=0;i=N/2;i+) k=i;for(j=i+l;jbj) k=j;if(k != i)/* fiQund* */t=bi; bi=1; bk=t;(1) bk/*/mid=b_2_;(2) N/2for(i=0; iN; i+) /* &und* */if(xi3mid)xi=mid; (3) return mid;)main() int i, xN= 1,5,7,23,87,5,8,21,45);for(i=0; iN; i+) printf(%d
3、n,xi);printf(AnThe mid data is: %dnfun(x);for(i=0; iN; i+) printf(H%d n,xi); printf(AnM);2、给定程序中,函数fun的功能是建立一个NxN的矩阵。矩阵元素的构成规律是:最外 层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,依 次类推。例如,若N=5,生成的矩阵为:1111112221123211222111111请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKLC中。不得增行或删行,也不得更改程序的结构!#inclu
4、de #define N 7/* */void fun(int (*a) _1_) if(N%2=0) m=N/2 ;elsem=N/2+l;for(i=O; im; i+) /* * found * */for(j=_2_;jN-i;j+) aij=aN-i-l|j=i+l;for(k=i+l; kN-i; k+)/* und* */aki=akN-i-l=_3_;main() int xNN=O,i,j;fun(x);printf(MnThe result is:nM);fbr(i=O; iN; i+) for(j=0; jN; j+) printf(M%3dn,xij);printfCn
5、); 2、 (1) N (2) i (3) i+13、给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字 字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串 为:def35adh3kjsdf7o 执行结果为:defadhkjsdf3537o请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include void fun(char *s) int i,j=0, k=0; char tl80, t280;砧代0;口!=*0; i+
6、)/* found* */ t2j=si;1;else tlk+=si;t2j=O; tlk=O; /* * und* */ for(i=0; ik; i+) _2;/* */for(i=0; i_3; i+) sk+i=t2i;main() char s8O:def35adh3kjsdf7”; printf(AnThe original string is : %snu,s); fun(s);printf(AnThe result is : %sns);3、(1) j+ (2) si=tli (3) j4、给定程序中,函数firn的功能是:有NxN矩阵,以主对角线为对称线,对称元素相 加并将
7、结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 123456789计算结果为10065010149请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!#include #define N 4 /* nd* */ void fiin(int (*t)1) int i,j;for(i=l; iN; i+) for(j=0;ji;j+)/* * */.3=0;main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,
8、21,33,10, i,j; printf(AnThe original array:nH);for(i=0; iN; i+) for(j=0; jN; j+) printf(n%2d n,tij);printf(,nH);)fun(t);printf(AnThe result is:nM);for(i=0; iN; i+) for(j=0; jN; j+) printf(n%2d n,tij); printf(Hnn);4、N (2) tij(3)5、给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII 码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所
9、指字符数组中,形成一 个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应 为:aachjlsw,请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include void ftin(char *s, char *p) int i,j, n, x, t;n=0;for(i=0; si!=W; i+) n+;for(i=l; in-2; i=i+2) /* nd* */1;/* found* */for(j=-2+2 ; js) t=j
10、;if(t!=i) x=si; si=st; st=x; for(i=l,j=0; in; i=i+2, j+) pj=si;/* *lound* */Plj=-3;)main() char s80=,baawrskjghzlicda, p50; printAnThe original string is : %sn*,s); fun(s,p);printf(AnThe result is : %snp);)5、(1) t=i (2) i (3) 06、程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数fun 的功能是输出这位学生的信息。请在程序的下划线处填入正确的内容并把下
11、划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include typedef struct int num;char name 9;char sex;struct int year,month,day ; birthday;float score 3;STU;/* d* */ void show(STU 1_) int i;printf(,n%d %s %c %d-%d-%du, tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.bi
12、rthday.day);fdr(i=O; i (1) tt (2) tt.scorei (3) std7、给定程序中,函数fiin的功能是:计算NxN矩阵的主对角线元素和反向对角线元素 之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。147例如,258若N=3,有下列矩阵:369fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:#include#define源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!N 4 fiin
13、(int tN, int n) int i, sum;/* four) ci* */一1一;for(i=0; in; i+)/* und* */sum+=2;for(i=0; in; i+)/* fiQund* */sum+= tin-i-3;return sum;main() int3,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(w%4d,tij);printf(,nM);)printf(The result is
14、: %d,fun(t,N);7、 sum=O (2) tii (3) 18、给定程序中,函数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 #include #de
15、fine N 10double fun(double x|,double *y) int ij; double av;/* * ound* */av=_1_;/* Qund* */fbr(i=O; iN; i+) av = av + _2_; for(i=j=O; iav) y(_3_= xi;yj=-i;returnav;main() int i;double#include#include#definedouble xN = 46,30,32,40,6,17,45,15,48,26);yN;for(i=0; i=0; i+) printf(H%5.0f M,yi); printf(,nM)
16、;)8 (1) 0 (2) xi/N (3) j+9、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所 有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据 移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有 10 个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000移动后的输出为:30 6 17 15 26 46 32 40 45 48请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得
17、增行或删行,也不得更改程序的结构!N 10 double fun(double *x) int i, j;double av, yN;av=0;/* * */for(i=0; iN; i+) av +=_1_:fbr(i=j=O; iN; i+)if( xiav )/* Rmnd * */yj=xi; xi=-l;_2_;i=0;while(iN) if(xi!=-l) yj+=xi;/* jjund* */_3;for(i=0; iN; i+)xi = yi;return av;1main() int i; double xN;for(i=0; iN; i+) xi=rand()%50; p
18、rintf(H%4.0f n,xi); printf(MnH);printf(,nThe average is: %fnn,fun(x);printf(nnThe result :nffun(x);for(i=0; iN; i+) printf(n%5.Of xi);printf(n);9、 xi/N (2) j+ (3) i+10、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定 所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数 据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有 10个正数:46
19、 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#defineN 10 double fun(double *x) int i, j; double s, av, yN;s=0;for(i=0; iN; i+) s=s+xil;/* * Qund* */av=for(i=j=O; iav )/* fo
20、und* */y_2_=xi; xi=-l;)for(i=0; iN; i+)/* f)und* */if(xi!=_3_)y|j+l=xi;for(i=0; iN; i+)xi = yi;return av;)main() int i; double xN= 46,30,32,40,6,17,45,15,48,26);for(i=0; iN; i+) printf(M%4.0f M,xi);printf(n);printfCVnThe average is: %fnM,fun(x);printf(nnThe result :nM,fun(x);for(i=0; i 中,把偶数从数组中删除,奇
21、数个数通过函数值返回。例如:若a所指数组中的 数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、 3、5、7,返回值为5。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#define int fiin(int int i,j;N 9a, int n)j =0;for (i=0; in; i+)/* Qund* */if(ai%2=1_) /* Qund * */aj = ai;2一: /* Qund* */return3ma
22、in() int bN=9,l,4,2,3,6,5,8,7), i, n;printf(AnThe original data :n);for (i=0; iN; i+) printf(n%4d ”, bi);printftAn);n = fun(b, N);printf(AnThe number of odd : %d n,n);printf(AnThe odd number :nM);for (i=0; in; i+) printf(u%4d ”, bi); printf(nM);)11、(1) 1 (2) j+ (3) j12、给定程序中,函数fun的功能是:求ss所指字符串数组中长度最
23、短的字符串所在的 行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M 个字符串,且串长N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#include#defineM5#defineN20 int fun(char (*ss)N, int *n) int i, k=0, len= N;/* d* */for(i=0; i_1; i+) len=strlen(ssi);if(i=0) *n=len;/* d* */if(len 2 *
24、n) *n=len;k=i;retum(3);)main() char ssMN= shanghai/uangzhou,beijing,tianjing*,chongqing*; int n,k,i;printfCAnThe original strings are :nH);for(i=0;iM;i+)puts(ssi);k=fun(ss,&n);printf(AnThe length of shortest string is : %dn,n);printf(AnThe shortest string is : %sn,ssk);12、 (1) M (2) (3) k13、人员的记录由编号
25、和出生年、月、日组成,N名人员的数据已在主函数中存入结构 体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的 数组中,由主函数输出,同时由函数值返回满足指定条件的人数。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出止:确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #define N 8typedef struct int num;int year,month,day ;STU;int fun(STU *std, STU *k, int year) int i,n=0;for (
26、i=0; iN; i+)* * foun d* */if( 1=year)/* */kn+= _2_;/* * cl* */return (3);)main() STU stdN= 1,1984,2,15,2,1983,9,2984,9,1,4,1983,7,15,5,1985,9,28,6,1982,11,15,7,1982,6,22,8,1984,8,19;STU kN;int i,n,year;printf(HEnter a year: ); scanf(%d,&year);n=fun( std,k,year);if(n=O)printf(nNo person was born in %
27、d n*year);else printf(unThese persons were bom in %d nyear);fbr(i=O; in; i+)printf(n%d %d-%d-%dnki.num,ki.year,ki.month,ki.day);13、(1) stdi.year (2) stdi (3) n14、函数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 #define N 9void fiin(int a, int n) int i, t, p;/* Qund * */p = (n%2=0)?n/2:n/2+1;for (i=0; in/2; i+)t=ai;/* found* */ai = ap+_2_;/* f)und* */3= t;)main() int bN= 1,2,3,4,5,67,8,9, i;printf(AnThe original data :nH)
29、;for (i=0; iN; i+) printf(M%4d M, bi);printf(W);fun(b, N);printfCAnThe data after moving :nn);for (i=0; iN; i+) printf(n%4d ,bi);printf(AnM);)14. (1) 1 (2) i (3) ap+i15、给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件 中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确崭绸果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增
30、行或删行,也不得更改程序的结构!#include void ftin(char *s, int a, double f) /* found* */-1fp;char ch;fp = fopen(file 1.txt1, nw);fprintf(fp, n%s %d %fnH, s, a, f);fclose(fp);fp = fopen(,filel.txt, nrn);printf(unThe result :nnH);ch = fgetc(fp);/* Qund* */while (!feof(_2_) /* fiound* */putchar(_3_); ch = fgetc(fp);
31、) putchar(n);fclose(fp);main() char a10=,Hello!H; int b= 12345;double c= 98.76;fun(a,b,c);15、(1) FILE* (2) fp (3) ch16、给定程序中,函数fun的功能是:找出NxN矩阵中每列元素中的最大值,并按顺 序依次存放于形参b所指的一维数组中。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出止确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include #define N 4void fun(int (*a)N, int *
32、b) int i,j;for(i=0; iN; i+) /豕* toun d */ b|i=_l_; for(j=l;jN;j+)/*quncl* */if(bi _2_aUi)bi=a|ji;main() int xNN= 12,5,8,7,6,1,9,3, 1,2,3,4,2,8,4,3 printf(unThe matrix :nH);for(i=0;iN; i+) for(j=0;jN;j+) printf(%4dt;xi|j); printf(Ann);)/* * )und* */fun(_3_);printf(nThe result is:);for(i=0; iN; i+) pr
33、intf(%3d,yi);printf(n);16、(1) aOi (2) (3) x,y17、给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数, 并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为: abcdef35adgh3kjsdf7 输出结果为:4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include void fun(char *s, int *t) int i, n;n=0;/* found* */for(i=0
34、;1!=0; i+) /* Qund* */if(si=,O,&si= 2 ) n+;/* found * */ main() char s8O=nabcdef35adgh3kjsdf7n;int t;printf(AnThe original string is : %sns);fun(s,&t);printf(,fnThe result is : %dnu,t);)17、(1) si (2) 9 (3) *t=n18、函数fun的功能是:把形参a所指数组中的最小值放在元素a0中,接着把形参a 所指数组中的最大值放在al元素中;再把a所指数组元素中的次小值放在a2中,把a所 指数组元素中的次
35、大值放在a3;其余以此类推。例如:若a所指数组中的数据最初排列为: 9、1、4、2、3、6、5, 8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。 形参n中存放a所指数组中数据的个数。注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!# include #define N 9 void fun(int a, int n) int i,j, max, min, px, pn, t;
36、for (i=0; in-l; i+=2) /* * found * */max = min =1px = pn = i;for (j=i+l; jn;j+) /* */if (max3) min = a|j; pn=j; )if (pn != i) t = ai; ai = min; apn = t; if (px = i) px =pn;)if (px != i+1) t = ai+l; ai+l | = max; apx = t; main() int bN=9,1,4,2,3,658,7 printf(AnThe original data :nM); for(i=0; iN; i+)
37、 printf(,%4d ”, bi); printf(AnH);fun(b, N);printf(nThe data after moving :nM); for(i=0; iN; i+) printf(u%4d ”, bi); printf(AnH);18、(1) ai (2) aj (3) a|j19、给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移, 其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh5#43df, 处理后新字符串为:123543asdfgh#df0请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKI.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*sizeof(char);p=(char*)malloc(n*sizeof(char);j=0; k=0;fbr(i=O; in; i+) if(isdigit(si) p_l_=si;j+;
限制150内