《全国计算机二级C语言填空题库.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言填空题库.docx(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2011年9月上机填空题给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从从头至尾的数据为:10、4、2、8、6,排序金到太桃屏 即若原解表结点ws辽 后锭表口,数据域从兴至尾的数堀为:2 4、6、8、10o请在程序图下峻处填入正耦的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不替增杆或删行,也不睿更改程序的结构!#include #include #define N 6typedef struct node int data;struct node *next; NODE; NODE *p, *q; int t;/* n
2、d * */P = _1;void fun(NODE *h)h-next /*因为是带有头节点,头节 点不存内容所以,不取头节点*/while (p) /*tound*/p-next /*从p指向的下个节点 开始比较*/while (q) /*,ound*/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(NODE);h-next =
3、NULL;for(i=0; 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) printf(nThe list is NULL!nn); else printf(nnHead *);do printf(,-%dn, p-data); p=p-next; while(p!=NULL);printf(”-Endn”);) main() NODE *head;int
4、aN= 0, 10, 4, 2, 8,6 ;head=creatlist(a);printf(MnThe original list:nH);outlist(head);fun(head);printf(nnThe list after sorting :nn);outlist(head);程元,2 8 5普 :定个如 序在意给哪例173程请注小 果庄中,函数fun的功熊是:在3X4的处库中找出在行上最大、在列上最 叁若在有符合条律的元素则输出相虚信息、。看下列矩阵:13410697行结果为:find: a2 2=9中构 .c结 IKI的 廊序 BL程 的改 下更 港 件不 文也 公, 考行
5、在删 放或 序增 S 源不序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结#include #defineM3#defineN4 void fun(int (*a)N) int i=O,j,find=O,rmax,c,k;while( (iM) & (!find) rmax=ai0; c=0;for(j=l; jN; j+)if(rmaxai|j) /*found*/rmax=aij; c= _1_ ; j /*下面看出c作为列号,所以c=j*/find=l; k=0;while(kM & find) /* ound* */if(k!=i & akc=rmax) find= _2_
6、 ;0 /* find 作为标志,值只能是1 or 0 ,此 处之前find =1 ,所以现 在改变为0*/k+;if(find) printf(find: a%d%d=%dn,i,c,aic);/* ound* */_3_ ;i+; /*补充完 while 大循环,若无i+,则循环 不能结束*/) if(!find) printf(not found!n);main() int xMN,i,j;printf(Enter number for array:n);for(i=0; iM; i+)for(j=0; jN; j+) scanf(%d,&xij);printf(The array:n)
7、;for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn); fun(x);在的行下数组中共果。序中,函数fun的功能是:求ss所指字符串数组里首度最短的子符串所 ,作为函数值返回,并把其串长放在形参断指表董中。ss所指字符串 M不字行串,且串长N。序的下细线处填入正确的内容并把下划线删除,使程序得出正确的结注意:源程序存放在考生文件考下的BLANK1.C中。 不容增若或删行,也不将更改程序的结构!#include#include#defineM5#defineN20int fun(char (*ss)N, int *n) in
8、t i, k=0, len= N;/* found */ for(i=0; i1; i+)N /*i是行,所以小于 M*/ len=strlen(ssi);if(i=0) *n=len;if(len 2 *n)/* *n来存放大的长度,谁比它 大,它就要谁*/ *n=len; k=i;k /* k是最长的字符串的下 标*/* found */return(3);main() char ssMN= shanghai” Jguangzhou*”beijing*”tianjing, chongqing;int n,k,i;printf(nThe original strings are :nH);f
9、or(i=0;iM;i+)puts(ssi);k=fun(ss,&n);printf(nThe length of shortest string is : %dn,n);printf(nnThe shortest string is : %snM,ssk);给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的宅符按 ASCII码大小递t眺序,并将排序后下标为奇数碣字符取出,存入形参p所指字符 数组中,形械一个新串。/如,%参S矫指的字符串为:baawrskjghzlicda,执行后p所指字符数组中 的字符串应为:aachilswo果,注意:源程序存放在考生文件隽下的BLANK1.
10、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=l; in-2; i=i+2) /* found */t=ifor(j=2+2 ;jsj) t=j;if(t!=i)/*设置t为i所在位置 */t/*j从第二个奇数位置开始依次比较*/ x=si; si=st; st=x; for(i=l,j=0; in; i=i+2, j+) pj=si;/*,ound*/pU=
11、3;)(r /*字符串最后补o作为结束*/) main() char s80=,baawrskjghzlicda pf5O;printfC*nThe original string is : %snH,s);fun(s,p);printf(nnThe result is : %snf,p);,串 。 数符果定存.在意给请注襄ab程.,参35下 中形ef的 序在cd序符乱除 师输助 用中怡 SF数40或 参函n 形主为村 计在果配 是,机 能中。璘 功量f7u 他秀sd皂 Un的器 f旨13攵 数用国 函wad划,使程序得出正确的结序增源不中构 .c结 叫的 AM序 BL程 的改 下更 I 件不
12、 文也 生, 考行 在删 放或 立仃#include void fun(char *s, int *t) int i, n;n=0;/*tound*/for(i=0; 1 !=0; i+)/* found */if(si=0&si= 2 ) n+;/* * found* */3;si /*下标指向的内容不是0 的话,继续循环*/9 /*si的范围是0到*t=n /*循环结束*t取n的 值*/main() char s80=abcdef35adgh3kjsdf7;int t;printf(nThe original string is : %sn,s);fun(s,&t);printf(nThe
13、 result is : %dn,t);中,各位上为偶数的数取出,并按给定矍序中,函数fun的功能是:明 原来从高梗到低位祖反的顺序组成一个6mx,例如,输入一不整数:27638496,函数返回值为:64862。请在程洋的下划线处填入正确的内容并把下如线删除,使程序得出正确的结作为函数值返回。果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不替增旺或删行,也不睿更改程序的结构!#include unsigned long fun(unsigned long n) unsigned long x=0; int t;while(n) t=n%10;/*nd * */*found*/0 /
14、*t%2=0 说明t是偶数*/*10/*让*进位到10位,让 t为个位数,比如3和2组成一 个数3 *10+2 正好是32,*/* ound* */n=_3_;n/10 /* n/10 让 n 变小一位,通过循环将n所有的数都拿出来*/return x;)main() unsigned long n=-l;while(n99999999|n0) printf(Please input(0n 100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n);函数fyn的功能,是:.把形参噌罩稿肥的奇数按原顺序依次存放到a0、 ,奇数
15、个数通融函数值返回。例如:al,a、中,弗偶数内 也若新指数组中的数据最初现歹广为:9、1、4、2, 3、6、5、8, 7,删除偶数后a、3, 5、7,返回值为5。所指数组史的数强为:9、, 请在建序的节划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件隽下的BLANK1. C中。 不替增后或删行,也不备更改程序的结构!#include #define N 9 int fun(int a, int n) int ij;j = 0;for (i=0; in; i+)/* ound* */if(ai%2=-1)aj = ai;-2一;return31/*奇数判断*
16、/j+/* aj赋值后 j+ */j /*j作为下标,可以用来计个数*/main() int bN=9,l,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);给定程序中,函数fun的功能是:判断形参s (Pali
17、ndrome),若是,函数近向值为木是,孑是回文数返回值为0。回文是正读和反读都一样的字符串如区分大小写字母)。例如,LEVE熊吐皿已1是回文,而LEVLEV不是回文。请在程序的中划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不容增注或删行,也不痔更改程序的结构!#include #include #include int fun(char *s) char *lp,*rp;/* found* */S /.* Ip指向字符串最开头 正好是s所指向的位置*/ rp=s+strlen(s)-l;while(toupper(*lp)=
18、toupper(*rp) & (lprp) /*tound*/lp+; rp _2_ ; /* lp+ rp- Ip 向后移动 rp 向前移动 */* found* * */if(lprp)3;return 0/*当循环结束,看看那个条件结束的,如果是Ipvrp则比较到了最后,如果是(toupper(*lp)=toupper(*q5)结束,贝U证明 有*lp*rp不相同,此时不是 回文*/else return 1;)main() char s81;printf(nEnter a string: ); scanf(n%sn,s);if(fun(s) printf(,n,%sn is a Pal
19、indrome.nnn,s);else printf(n%s isnt a Palindrome.nn,s);函数fun的哪3是:胸出面指数组史的前n个数据,黑求每行触5个数。 请在程序的手划线遇真人正确的内容并把下划骈鼠使理序得出正确的结注意:源拶序存放在考生文件*下的BLANK1. C中。不得增杆或删行,也不容更改程序的结构!#include #include void fun( int *a, int n ) int i;for(i=0; in; i+)i%5/*每行输出几个数,就和几求余*/n /*每五个输出换行*/ai /*输出数据*/*found*/if(1=0 )/* found
20、 */printf(2);/* found* */printf(%d ,3);)main() int a100=0,i,n;n=22;for(i=0; in;i+) ai=rand()%21;fun( a, n);printf(n);10给定逑序史,函数fun的功能是:找出100999之间(含100和999)所有整数 中各位上羲字之和为x (x为一正整数)的整数,然后输出;符合条件的整最个数作 为鬲数值返回。例如,当x值为5时,100999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302, 311、320、401, 410, 500
21、。共有15 个。当x指为27时,各位数字之和为27的整数是:999。只有1个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源矍序存放在考生文件隽下的BLANK1.C中。 不辱增存或删行,也不得更改程序的结构!#include int fun(int x) int n, si, s2, s3, t;n=0;t=100;/*tound*/*t的范围是0999 */*个位数是t%10 十位数是t/10 %10 百位数是 t/100 */while(t=_l_)999/* found* * */sl=t%10; s2=(_2_)%10; s3=t/100;t/10/*
22、 ound* */if(s 1 +s2+s3=3)/*各位数字之和是输入的X的值*/ printf(%d ,t);n+;)t+;return n;)main() int x=l;while(x0): ); scanf(n%d,&x); printf(nnThe result is: %dnfun(x);11给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。Ix3,3x5 + 5x7,1(2x-1)x(2x1)224262-(2x)2例如,当龙参n的值为10时,函数返回:-0. 20449K果。请在程序的下划残处填入正确的内容并把下划线删除,使程序得出正确的结注意:源程序存放在考
23、生文件旁下的BLANK1.C中。 不容增存或删行,也不得更改程序的结构!#include double fun(int n) int i, k; double s, t;s=0;1/*根据第一项定k的初值为1 */2*i/*t * t做分子可以得出t=2*i*/(-1) /*k每次乘以-1每项变正负号*/* found* */ k=_l_;for(i=l; i=n; i+) /* found* */t=_2_;s=s+k*(2*i-1 )*(2*i+l)/(t*t);/*nd * */k=k*_3_;)return s;)main() int n=l;while(n0): ); scanf(%
24、d,&n); printf(nThe result is: %An,fun(n);最右边的n个字彼复制长度小于n,则监整个12给定跖中,函数fun的功能是:把形参s皿指签位里中 到尼参t丽盲子符数组把,龙成一个新串。若拚霜李悻再的 字焉串装制到形参薪相予符数组中.组中果。例如,般参s所指衢学将串为:abcdefgh, n的值为5,程序执行后t所指字符数 的字货串应为! defgho请盍建序的下划线班填入正确的内容并把下划线删除,使程序得出正确的结注意:源矍序存放在考生文件隽下的BLANK1.C中。 不相增注或删行,也不编更改程序的结构!#include #include #define N 8
25、0void fun(char *s, int n, char *t) int len,i,j=0;len=strlen(s);/*tound*/if(n=len) strcpy( 1);t, s/*将 s 复制给 t */else /* found */for(i=len-n; i=len-l; i+) tj+= _2_ ;si /*根据条件将 s 的内容给t*/* ound* */tj= _3_;0/*字符串最后加、(T结束*/)main() char sN,tN; int n;printf(nEnter a string: M);gets(s);printf( uEnter n:); sc
26、anf(%dn,&n);fun(s,n,t);printf(MThe string t: ); puts(t);的字卷给定程序中,函数fun的功能是:将形参5听旨锁息申班懿度值公运! 芍存大形参t所指字符数组中,形成一个新串,用充计出符合条件的字符数值返回。一例如,形参s所指的字符串为:Abclx56*,程序执行后t所指字符数组中的字 符串应为:A156*。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结作为百果。注意:源程序存放在考生文件隽下的BLANK1. C中。 不卷增存或删行,也不容更改程序的结构!#include int fiin(char *s, char *t)
27、 int n=0;while(*s) if(*s 97) /* * *tound* */*(t+n)= 1 ; n+; /* found */ _2_;)*(t+n)=0;/* found */ return _3_ ;*s /*如果*s小于97将*s放入t所指 向的数组中*/s+ /*s指针后移 配合while循环*/D/*返回t所指向数组中的数据个数*/)main() char s81,t81; int n;printf(nnEnter a string:nH); gets(s);n=fun(s,t);printf(f,nThere are %d letter which ASCII co
28、de is less than 97: %sn,n,t); 14果。给定卷序史函数fun的功能是将将参给定的孑符串整熬点数写到文本能融后益腾天静解翦房铺踊蜉髭褊由正确的结.此文本文注意:源程序存放在考生文件房下的BLANK1.C中。 不备增杵或删行,也不德更改程序的结构!#include void fun(char *s, int a, double f)/*found*/-1fp;FILE* /*定义文件指针格式,这个必须记住(必须的)*/char ch;fp = fopenCfilel.txt, w);fprintf(fp, %s %d %fn, s, a, f); fclose(fp);
29、fp = fopenCfilel.txt, r);printf(nThe result :nn);ch = fgetc(fp);/* found* * */fp /*feof()函数是判断文件 是否结束,如果结束, 返回0,函数的参数是 判断的文件的文件指针 */ch /* 输出 ch */while (!feof(_2_) /*,ound*/putchar(3一); ch = fgetc(fp); putchar(n);fclose(fp);)main() char a10=Helk)!”; int b= 12345;double c= 98.76;fun(a,b,c);15列,给定程序中,
30、函数fun的功能是:将新指3X5矩阵中第k列的元素左移到第0第k列以后的年列元素行依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵:121212若k为2,345345345程序执行结果为512512512果。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结注意:源程序存放在考生文件隽下的BLANK1.C中。 不相增后或删行,也不偏更改程序的结构!#include #defineM3#defineN5void fun(int (*a)N,int k)for(p=l; p= _1_; p+)k /*这个地方的条件判断必须看下面循环体的作用是什么,通过程 序我们可以看出,循
31、环体的作用 是将最后一列放到开头,也就是 左移一列。那么我们要左移k 次,所以条件是p=k (注意,p=l 开始的)*/for(i=0; iM; i+) temp=aiO;/* ound* */for(j=0; j _2_ ; j+) aij=aij+l; N-l /* jN-l 表示先通过 for循环左移N-l 次,然后把temp 放到最后,完成循环 体功能。*/* found* */temp /*注意temp内存放的是第一个内 容,在以后完成之后,我们将其 放到每行的最后*/main() int xMN= 1,2,345,1,2,3,4,5,123,4,5 ,ij; printf(The
32、array before moving:nn);for(i=0; iM; i+) for(j=0;jN;j+) printf(%3d,xij); printf(n);)fun(x,2);printf(The array after moving:nn);for(i=0; iM; i+) for(j=O;jN;j+) printf(%3d,xiUJ);printf(n);函数fun的功能是:和龙参撕指数组中的辰小值放在元素a0中, 徽黜癖懿踊鼐赢S叫J i 其余 匕推。为:9, 1、4、2, 3, 6、5、8、7;则书后,数据排列为:1、9, 2、8、3, 7、4, 6、5。形参n中存放新指 据
33、的个数。注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大 值的下标。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件隽下的BLANK1. C中。不得增行或删行,也不律更改程序的结构!# include #define N 9 void fun(int a, int n) int ij, max, min, px, pn, t;for (i=0; in-l; i+=2) /* *found */max = min = 1ai /*设置循环max min 的值都为ai 以后从ai开始,依次比较*/px = pn = i;for
34、 Q=i+l;jn; j+) aj/*通过j循环找到max的值,及其 下标*/aj /*通过j循环找到min的值,及 其下标*/* *found* *Iif (max_3_)min = aj; pn = j;if (pn != i) t = ai; ai = min; apn = t;if (px = = i) px =pn;)if(px !=i+l) t = ai+l; ai+l = max; apx = t; )main() int bN=9,l,4,2,3,6,5,8,7),i;printf(nThe original data :n);for (i=0; iN; i+) printf(
35、%4d , bi); printf(n);fun(b, N);printf(nThe data after moving :n); for (i=0; iN; i+) printf(%4d , bi); printf(n);17给定程序史,函数fun的功能是:将NXN矩阵中元素的值按列右移1个位置 右边被移出矩阵的元素绕回左馈。例如,N=3,有下列矩阵123456计算结果%8312645978果。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结注意:源程序存放在考生文件天下的BLANK1.C中。 不相增后或删行,也不偏更改程序的结构!#include #define N 4v
36、oid fun(int (*t)N) int i,j, x;/* found* * */for(i=0; i=l; j-)/* *found* */ ti-3=x;0/*将x放到每行开头*/)main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10), i,j; printf(The 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+
37、) for(j=0; jN; j+) printf(%2d ,tij);printf(n);18给定程序中,函数fun的顼熊是:将形参s班指字符串中的数字字符转换成对 应的数值,缶算出这些数值的累加和作为函数值返回。例如,形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为:22请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夫下的BLANK1.C中。 不相增后或删行,也不宿更改程序的结构!#include #include #include int fun(char *s) int sum=0;while(*s) /*found*/if( isdigit(*s) sum+= *s- _1_/* found* */0,/* *s内容是字符,通过减去字符0得到其对应 数字*/s+ /*s指针后移 配合while循 环*/)/* found* */ return 3;sum /* O(H_C)O哈哈,这个简单 了,就是返回前面得到的和 sum 嘛*/main() char s81; int n;printf(nnEnter a string:nnn); gets(s);n=fun(s);pr
限制150内