《二级C语言题库(二).docx》由会员分享,可在线阅读,更多相关《二级C语言题库(二).docx(145页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1套题一、程序填空题碘人da确 涸的5.正 fur级le入 遭fi填 调。界 是同为线 3野节名为 功话率 的电写的 序和块序 程名 定姓数在 给、个请 号一中构 ca 1勺 AN序 BL程 的改 下更 件不 文也 生, 考行 在删 放或 查E 序增 源不编为果/includeinclude#define N 5 typedef struct int num;char name10;char tel10;STYPE;void check();/* f0 und*/ int fun(_1_ *std) /*found*/int*fp;if(fp=fopen(myfile5.dat7wb)=NU
2、LL) return(O);printfCVOutput data to file !n);for(i=0; iN; i+)/*found*/ fwrite(&stdiL sizeoffSTYPE), 1,3);fclose(fp);return (1);main() STYPE s10=l,aaaaa;llllll,Ll/,bbbbbz222222,l;,ccccc,333333L lzddddd,/444444,/l,eeeee;555555;int k;k=fun(s);if (k=l) printf(Succeed!); check(); elsevoid check() FILE *
3、fp; int i;STYPE s10;if(fp=fopen(myfile5.dat/rb)=NULL)printf(Fail !nH); exit(O);printf(nnRead file and output to screen :n);printf(n num name telnn);for(i=0; iN; i+) fread(&si,sizeof(STYPE),l, fp);printf(%6d %s %sn/si.num/si.name/si.tel);)fclose(fp);二、程序改错题颦噩?薛爵黑矗副串的后氤串为 ABCDE时,到魂史.先将在字符串S中的字符按正序存放应为
4、:ABCDEEDCBA”。请改正程序中的错误,使它能卷出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!/include #include void fun (char *sz char *t) int i, si;si = strlen(s);/* fo und*/for( i=0; isl; i +) ti = si;for (i=0; isl; i+) tsl+i = ssl-i-l;tsl = 0;main() charsIlOO, t100;printf(HnPlease enter string s:); scanf(s”, s);fun(s, t);
5、printf(The result is: %sn, t);三、程序编写题函数fun的功能是:将两个两位数的正整数a、b合 合并的方式是:喟酸的十位和个位数依次放在c数的二和个位数依次放在C数的百位和个位上。例如,当a=45, b=12时,调用该函数后,c=4152o注意:部分源程序存在文件PR0G1.C中。数整件IN. DAT中的数据不得修改。请勿改动主函初:一钿廿百N 粘rh砧红局rti夫 A?左宓粘c.砧尤芹具rtr+吉 入你编写的若干语句。mai福口其它函数中的任何内容,仅在函数fun的花括号中填#include void fun(int a, int b, long *c)main(
6、) int azb; long c;void NONO ();printf(lnput a b:“); scanf(%d%d/ &a, &b);fun(a, b, &c);printf(The result is: %dn, c);NONO();)void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *rf, *wf;int , azb; long c;rf = fopenCKiWkOlWAOlOOOlWin.dat, r);wf = fopenCKiWkOlWAOlOOOlWout.datVw);for(i = 0 ; i 10 ; i+) f
7、scanf(rf, d,%d”,&a, &b);fun(a, b, &c);fprintf(wt a=%d/b=%d/c=%ldn/ a, b, c);fclose(rf);fclose(wf);第2套题一、程序填空题给定程序的功能是:从键盘喻入若干行文本(每程不超过80个字符),写到 文件吧filetxt史那-1 (独立一分)布为字符也输入结束的标志。然后将文件的 内苕决出显不在屏票上。文件的读身分自岫自定义函薮ReadText和WriteText实请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果注意:源野序存放在考生文件隽下的BLANK1.C中。 不替增忏或删行,也不
8、得更改程序的结构!/include#include#include void WriteText(FILE *);void ReadText(FILE *);main() FILE *fp;if(fp=fopen(,myfile4.txt;w)=NULL) printf( open fail!lnM); exit(O); WriteText(fp);fclose(fp);if(fp=fopen(myfile4.txt/r)=NULL) printf( open fail!n); exit(O); ReadText(fp);fclose(fp);void WriteText(FILE 1) ch
9、ar str81;printf(nEnter string with -1 to end :n); gets(str);while(strcmp(str,-l)!=O) fputs(_2_,fw); fputs(n,fw);gets(str);) void ReadText(FILE *fr) char str81;printf(nRead file and output to screen :n);fgets(s8Lfr);while( !feof(fr) /*nd*/printf(%s,_3_);fgets(stc81Jr);J 7中S 量开位.表 位高为辉不 低在数施幅 角戈 是豁井正行
10、 能博,出增UM-Hn lbs 的t 240E不 Un在43它, 好放65使数 酸数7 ,函 帼新XJ:误iin 冲个妙错Ima的动中改Mo构J序要 星当程不 s,正. 定,如改意 给数注/include /*found* void fun (long s, long t) long sl=10;*t = s % 10;while ( s 0) s = s/100;*t = s%10 *sl + *t;sl = sl*100;main() long s, t;printfCnPlease enter s:); scanf(”ld, &s);fun(s, &t);printf(The resul
11、t is: %ldn, t);三、程序编写题学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组 s%,清编瞽数fun,它的功能是:把分数最低的学生数据放在b防指的数组中, 注意:务数盘低的学生可熊不止一个,函数返回分数最低留学生的人数。注意:部分源程序在殳住PR0G1.C文件中。请勿改粉主函薮mai湎箕它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。/include #define N 16 typedef struct char numflOl;int s; STREC;int fun( STREC *a, STREC *b )main() STREC
12、sN=GA051/85/GA03z76zGA02,69/GA04,85z GA01,91/GA07#72/GA08/64/GA06#87/ GA015/85,GA013/91/GA012/64,GA014/91, ,GA011,91/GA017,1/64/GA018z64/GA016/72;STREC hN;int i,n;FILE *out;n=fun( s,h );printf(The %d lowest score :n,n);for(i=0;in; i+)printf(%s %4dn”,hi.num,hi.s);printf(n);out = fopen(K:k0124010001ou
13、t.dat/wn);fprintf(out, dn”,n);for(i=0;in; i+)fprintf(out, ,%4dn,hi.s);fclose(out);第3套题一、程序填空题,函数fun的功Ab日8 BE:给定程序里 一nyfile3.txt的文本文件中,然后请在程序的下划枝处填入正确的内容将自然数110以及它们的平方根写到名为果。注意:顺序J喘耦使程序得出正确的结源辑序存放在考生文件隽下的BLANK1. C中。 不容增籽或删行,也不容更改程序的结构!#include#includeint fun(char *fname) FILE *fp;int i,n;float x;if(f
14、p=fopen(fname, w)=NULL) return 0;for(i=l;i=10;i+)/*-fQ|Jp|*/fprintf_1_,%d %fnJzsqrt(double)i);printf(nSucceed! nu);/* f0 und*/一2一;printf(nThe data in file :n);/*found*/if(fp=fopen(_3_/r)=NULL)return 0;fscanf(fp/%d%f/&n,&x);while(!feof(fp) printf(%d %fn,n/x); fscanf(fp/%d%f/&n/&x); fclose(fp);return
15、1;main() char fname=myfile3.txt; fun(fname);二、程序改错题给定程序M0DI1. C中fun函数的功能是:身n个无序整数从小到大排序。请改正建序中的错误,使它能空出正确的结果。注意:不要改动main函数,不容增行或删行,也不得更改程序的结构!#include /include void fun (int n, int *a ) int i, j, p, t;for (j = 0; jn-l; j+ ) p = j;for (i=j+l; in-l; i+ ) /*found*t=i;if(p!=j)t = aU;aj = ap;ap = t;void
16、putarr( int n, int *z) int i;for (i = 1; i = n; i+, z+ ) printf( ”4d“,*z );if( !(i%10) printf( Hn); printf(n);)main() int aa20=9,3,0,4,l,2,5,6,8,10,7, n=ll;printf( nnBefore sorting %d numbers:nz n ); putarr( n, aa );fun( n, aa);printf( nAfter sorting %d numbers:n, n ); putarr( n, aa );)三、程序编写题合和 你翡在
17、45源函句 加:放4分主语 通是次当野干 fur式依:改若 数方数如意勿的 函的位翟请写拄的嫡姬to函L中 躅踢n该0G数 乱册用PR函 、口 口 它 射二源,文其 将鼾膘骏 鎏奥br此在 40俱仅 阳警 =4勺 C数何 后I任 数e的数。入 改填 修中 管节 不括 据花 数的 的.,Un#include void fun(int a, int b, long *c)main() int azb; long c;void NONO ();pnntf(lnputab:H);scanf(,%d%d/ &a, &b);fun(a, b, &c);printf(The result is: %ldn/
18、 c);NONO();void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf *wf :int i, azb; long c;rf = fopen(,K:k0124010001in.dat/ HrH);wf = fopenCKAXkOlWAOlOOOlWout.daf/w);for(i = 0 ; i 10 ; i+) fscanf(rf, ”%d,%d, &a, &b);fun(a, b, &c);fprintf(wf, a=%d/b=%d/c=%ldn, a, b, c);fclose(rf);fclose(wf);第4套题一、程序填空题
19、的,件定罢 旨呈示给定程序的功能是:阴用函数fun将: 文件中,复制或功时函数位回值为1,失为 前芮内容输出到终球屏幕。主函数中源文, 在变里t fname中。请在程序的下划线处填入正确的内容并把下划线删除,目把名使程序得出正确的结果。注意,源程序存放在考生文件隽下的BLANK1. C中。不得增后或删行,也不得更改程序的结构!/include/include int fun(char *source, char *target) FILEchar ch;/*found*/if(fs=fopen(source,1)=NULL)return 0;if(ft=fopen(targetz w)=NUL
20、L)return 0;printf(nThe data in file :n);ch=fgetc(fs);/* f0 und*Iwhile(!feof(2) putchar( ch );/*found*/fputc(ch,3);ch=fgetc(fs);)fclose(fs); fclose(ft);printf(nn);return 1;)main() char sfname20 =,myfilel/tfname20=myfile2;FILE *myf; int i; char c;myf=fopen(sfname/w);printf(nThe original data :n);for(i
21、=l; i30; i+) c=,A+rand()%25;fprintf(myf;,%c/c); printf(%cH,c); fclose(myf);printf(nn);if (fun(sfnamez tfname) printf(Succeed!);else printf(Fajl!);二、程序改错题次取出,请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不博增行或删行,也不得更改程序的结构!嘉定矗誓蟒翳郭辘矗承微的上为偶数的数依 例如,当S中的叔为:87653142时,t粒数为:8642。#include void fun (long s, long *t)int
22、d;long sl=l;*t = 0;while ( s 0) d = s%10;/*|Qgp|* /if (d%2=0) *t=d* sl+ *t;si *= 10;)s= 10; main() long s, t;printf(nPlease enter s:); scanf(ld”,&s);fun(s, &t);printf(The result is: %ldn/1);N为偶数、同的一个新串三、程序编写题例如,若S所指字符串中的内容为:ABCDEFG123456”,其中字符A的ASCII码 值为奇数,因此应当删除;其中例B的ASCH码值为偶数,但左数组中的下杯为- -,数,所在数组中的
23、下标也为偶函数fun的功能是:将s所指 数的字符外,其余的全都删除;串 中。一奇数,因此也应当删除;而字符2的ASCII碣值为偶娄薮,因此不应当删琮,其它专面类推。最舄所指函数组中的内容应是:246”。行意:瘁分源程序存在文件PR0G1.C中。你编写的若干语句。请勿改翱主函薮main其它函数中的任何内容,仅在函数fun的花括号中填入#include #include void fun(char *s, char t) main()(char $100, t100;void NONO ();printf(nPlease enter string S:); scanf(”s”, s);fun(s,
24、 t);printf(nThe result is: %sn, t);NONO();void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ chars100Lt100;FILE *rf, *wf;int i;rf = fopenCKiWkOlWAOlOOOlWin.datVr);wf = fopen(K:k0124010001out.dat;w);for(i = 0 ; i 10 ; i+)fscanf(rf, %s, s);fun(s, t);fprintf(wf, %snz t);fclose(rf);fclose(wf);第5套题一、程序填空题给定程
25、序中己建立一个带有头结点的单向链表,链表中的各结点按结点数域中的数:洲八翳瘾I翻周龌蠲靠的值放入一个新结点并插 请在座序黄下划线处填入正确的内容并把下列房删除,使程序得出正确的结入到链表果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不彳导增巨或删行,也不建更改程序的结构!#include#include#define N 8 typedef struct list int data;struct list *next; SLIST;void fun( SLIST *h, int x) SLIST *p, *q, *s;s=(SLIST *)malloc(sizeof(SLIST);
26、/*found*/s-data=1q=h; p=h-next;while(p!=NULL & xp-data) */q=一2一; p=p-next;s-next=p;*/*found*q-next=3SLIST *creatlist(int *a) SLIST *h,*p,*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; idata=ai; p-next=q; p=q;p-next=O;return h;)void outlist(SLIST *h) SLIST *p; p=h-next;if (p=NULL) printf(nThe l
27、ist is NULL!nH); else printfCXnHead);do printf(-%d/p-data); p=p-next; while(p!=NULL); printf(-EndnH);)main() SLIST *head; int x;int aN=11,12,15,18,19,22,25,29;head=creatlist(a);printf(nThe list before inserting:n); outlist(head);printf(nEnter a number: ); scanf(”%d”,&x);fun(head,x);printf(nThe list
28、after inserting:nH); outlist(head);给定程序M0DI1. C史函数超的功能是:让笄正整数nun的各位上的数字之积。 20。若输入:202,则输出应该是:0。二、程序改错题例如,若输入:252,则扬出应该是:一 .一请改正程序中的错鼠 使它能誉出正确的结果。注意:不要改动main函数,不椁增行或删行,也不得更改程序的结构!/include long fun (long num)long k; dok*=num%10;/* found*/ num=10; while(num);return (k); main()long n;printf(nPlease ente
29、r a number:); scanf(%ld,/&n);printf(n%ldn,fun(n);三、程序编写题治编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函 数值遢回。例如:若有5门课程的成绩是:90.5, 72, 80, 61.5, 55则南致命值为;71. 80.注意:部分源程序存在文件PR0G1.C中。请卤改昌)主畲救mai就口其它南薮中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。/include float fun (float *a, int n) main()float score30=90.5/ 72, 80, 61.5, 55, ave
30、r;void NONO ();aver = fun( score, 5 );printf( nAverage score is: %5.2fn/ aver);NONO();)void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf;int i,j;float aver; score5;fp = fopen(K:k0124010001in.dat;rn);wf = fopen(,K:k0124010001out.dat,7wH);for(i = 0 ; i 10 ; i+) for(j = 0; j 5 ; j+) fscanf(fp
31、,%f,&scorej);aver = fun(score, 5);fprintf(wf, ”5.2fn”,aver);fclose(fp);fclose(wf);第6套题一、程序填空题函数瞌罐链罢缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件考下的BLANK1. C中。 不得增杆或删行,也不得更改程序的结构!#include#include#define N 8 typedef struct list int data;struct list *next; SLIST;void fun( SLIST *p) SLIST *t, *s;t
32、=p-next; s=p;while(t-next != NULL)/*found*/t=t-_1_;)*found* printf( %d ,2); s-next=NULL;*/free(_3_);SLIST *creatlist(int *a) SLIST *h,*pz*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; idata=ai; p-next=q; p=q;)p-next=O;return h;)void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) printf(nThe l
33、ist is NULL!n); else printf(HnHeadM);do printf(-%d,p-data); p=p-next; while(p!=NULL);printf(M-EndnH);)main() SLIST *head;int aN卜11,12,15,18,19,22,25,29;head=creatlist(a);printf(nnOutput from head:n); outlist(head);printf(nOutput from tail: n);while (head-next != NULL) fun(head); printf(nn); printf(n
34、Output from head again :n); outlist(head);)程中,正.定串如改意给加请注中需若程不L ow-s 动DI1中改曲内要输濯 应能不 则它, ,使数 cd,函 ab限link 为错ma。的行 ba确删 de正或 .出行 出聂。/#include /* found*/ fun (char a) if(*a) fun(a+l);/* found*/ printf(%c,*a);) main() char s10=abcd;printf(处理前字符串=%sn处理后字符串=,s);fun(s); printf(n);)三、程序编写题请编写一个函数fun,它的功能是:
35、比较两个字符串的长度,(不得飒用C语言 提供的求字符里长度的函数),函霰返回较K的字符串。若两个字符串W度相同, 则返回第一个字符串。例如,输入beijing shanghai (为回车键),函数将返回shanghai。注意:部分源程序存在文件PR0G1. C中。请勿改协)主函薮mai痛1其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。#include char *fun ( char *s, char *t) main()char a20/b20;void NONO ();printf(lnput 1th string:1);gets( a);printfflnput
36、2th string:1);gets( b);printf(%snzfun (a, b);NONO ();void NONO ()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf;inti;char a20, b20;fp = fopen(“K:k0124010001in.dat”T);wf = fopen(K:k0124010001out.dat;w);for(i = 0; i 10; i+) fscanf(fpz %s %s, a, b);fprintf(wf,sn”,fun(a, b);)fclose(fp);fclose(wf);第7套题一
37、、程序填空题给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数雷域递 增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只根留一果。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 注意:源矍序存放在考生文件房下的BLANK1.C中。不容增忏或删行,也不得更改程序的结构!#includeinclude#define N 8 typedef struct list int data;struct list *next; SLIST;void fun( SLIST *h) SLIST *p, *q;p=h-next;if (p!=NULL) q=p-ne
38、xt;while(q!=NULL) if (p-data=q-data) p-next=q-next; /* *found*m 1 free(1-);/*found*/ q=p-一2一; ) else P=q;q=q-_3_;)SLIST *creatlist(int *a) SLIST *h/pz*q; int i;h=p=(SLIST *)malloc(sizeof(SLIST);for(i=0; idata=ai; p-next=q; p=q;p-next=0;return h;void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) pr
39、intf(nThe list is NULL!n);else printf(nHead);do printf(-%d/p-data); p=p-next; while(p!=NULL); printf(n-Endn);main() SLIST *head;int aN=l,2,2,3A4A5;head=creatlist(a);printf(nnThe list before deleting :n); outlist(head);fun(head);printf(nThe list after deleting :n); outlist(head);)二、程序改错题 给定隹用K)DH. C中函数如n的功能是:用选择法对数组中的n个元素按从小到 噜勰谶瓢错误,使它能皆出正确的结果。注意:不要改动main函数,不椁增行和删行,也不得更改程序的结构!include #define N 20void fun(int a, int n)int i,j, t, p;for (j = 0 ;j n-1 ;j+) /* *found* * *P = Jfor (i = j+l;i n