《二级C语言题娃娃库.docx》由会员分享,可在线阅读,更多相关《二级C语言题娃娃库.docx(148页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1套题一、程序填空题给定程序的功熊是调用fun函数建立班级通讯录。通讯录中记承每位差生的 编号、姓名和电话号码。班级的人数和单生的信息从键盘读入,每不入的信息作 为一个数垠块写到名为呷file5. dat的二进制文件中。请在程序的手划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源.序存放在考生文件隽下的BLANK1.C中。不容增若或删行,也不得更改程序的结构!includeinclude#define N 5 typedef struct int num; char name10; char tel 10;JSTYPE;void check();/* *found* *
2、*/ int fun(_1_STYPE_ *std)/* fo und*/2_FILE_ *fp;intif(fp=fopen(myfile5.dat,7wb)=NULL) return(O);printf(nOutput data to file !n);for(i=0; iN; i+)/* fo und*/fwrite(&stdi, sizeof(STYPE), 1,3_fp_);fclose(fp);return (1);main()STYPEs10= l,aaaaa;llllll/l,bbbbb,222222/l,ccccc;,333333,l;ddddd;444444/l,eeeee
3、;,555555;int k;k=fun(s); if(k=l) printfCucceed!); check(); else)void check() FILE *fp; int i;STYPE s10;if(fp=fopen(myfile5.dat,rb)=NULL) printf(Fail !nH); exit(O);printf(nRead file and output to screen :n);printf(n num name telnH);for(i=0; iN; i+) fread(&si,sizeof(STYPE),l, fp);printf(%6d %s %sn/si.
4、num/si.name/si.tel);)fclose(fp);二、程序改错题给定程序MODI 1. C中函数fun的功能是: 到t串史,决后把s中的字符按逆序连接到t 例如:当s中的字便申为:ABCDE”时, 则t先将在字符串S中的字符按正序存放t串的后面。麒需藉厚篇CBA、 队的福吴二使它能道出更确的缜果。请改正程序中的错;吴,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!include include void fun (char *s, char *t) int i, si;si = strlen(s);/* f0 und* * /for( i
5、=0; i=sl; i +) ti = si;for (i=0; isl; i+)tsl+i = ssl-i-l;/* fo und*/ tsl = 0;(1) for(i=0;i=sl;i+) (2) t2*sl=O或 tsl+sl=Omain() chars100,t100;printf(nPlease enter string s:); scanf(s,s);fun(s, t);printffThe result is: %sn, t);三、程序编写题函数fun的功前是:将两个两位数的正整数a、b合 合并的方式是:嗝速的十位和个位数依次放在c数的阡罂号数翻笈和个位数依次放在C数的百位和个
6、位上。例如,当a=45, b=12时,调用该函数后,c=4152.注意:部分源程序存在文件PR0G1.C中。数整件IN. DAT中的数据不符修改。请勿改新主函薮mai旃其它函数中的任何楠,仅在函数fun的花括号中填 入你编写的若干语句。include void fun(int a, int b, long *c)*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10):main() int azb; long c;void NONO ();printf(lnput a b:); scanf(%d%d, &a, &b);fun(az b, &c);printf(The
7、 result is: %dn/ c);NONO();void NONO ()/*本函数用于打开档,输入数据,调用函数,输出数据,关闭档。*/FILE *rt *wf;int i, a,b; long c;rf = fopen(K:k0124010001in.dat, r);wf = fopen(K:k0124010001out.dat/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, bz c);fclose(rf);fclose(wf);第2套
8、题一、程序填空题给定程序的功能是:从键盘输入若干行文本(每任不超过80个字货),写到 文件噌iletxt也用-1 (独立一存)售为字符也输入岩束的标志。然后将文件的 内容淡出显示在屏窠上。文件的读写A别由自走义函数ReadText和WriteText实 现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不停增后或删行,也不得更改程序的结构!#includeincludeinclude void WriteText(FILE *);void ReadText(FILE *);main() FILE *fp;if(fp
9、=fopen(myfile4.txt,w,)=NULL) printf( open fail!n); exit(O); WriteText(fp);伺 ose(fp);if(fp=fopen(myfile4.txt,r)=NULL) printf( open fail!n); exit(O); ReadText(fp);fclose(fp); void WriteText(FILE char str81;printf(nEnter string with -1 to end :n);gets(str);while(strcmp(str;-lH)!=O)fputs(_2_ str _,fw);
10、fputs(n,fw);gets(str);void ReadText(FILE *fr) char str81;printf(nRead file and output to screen :n);fgets(str,81,fr);while( !feof(fr) /* fo und*/printf(%s”,3 str);fgets(str,81,fr);二、程序改错题上的数,给定程序M0DI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位 上,根茨构成一个新数放在t中。高位价在高位,低位仍在低位例如,当s中的数为:7654321町,t中的数为:7531。请改正程序中的错误,使
11、它能得出正确的结果。注意:不要改动main函数,不像增行或删行,也不得更改程序的结构!#include /* f0 und*I void fun (long s, long t) long sl=10;t = s% 10;while ( s 0) s = s/100;*t = s%10 *sl + *t;/* *found * * */sl = sl*100;(1) void fun(long sjong *t)(2) sl=sl*10;main() long s, t;printf(nPlease enter s:); scanf(%ld, &s);fun(s, &t);printf(The
12、 result is: %ldn, t);三、程序编写题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组 s灯请编警数fun,它的功能是:把分数最低的学生数据放在b防指的数组中, 注意:方数盘低的华生可熊不止一个,函数返回分数最低周学生的人数。注意:郃分源程序在支件PR0G1. C文件中。,勿改; *序在文件PR0G1.C文件中。你编写的若干语句。main其它函数中的任何内容,仅在函数fun的花括号中填入#include #define typedef char intSTREC;N 16 struct num10; s;int fun( STREC *az STREC *
13、b )int ij=O/min=aO.s;for(i=0;iN;i+)if(ai.smin)(j=O;bj+=ai;min=ai.s;else if(min=ai.s) bO+=ai;)return j;main() STREC sN=GA05z85/GA03/76/GA02/69/GA04/85/ GA01/91/,GA07/72/GA08/64/GA06/87/ GA015/85/GA013/91/GA012/64/GA014/91, GA011/91/GA017/64/GA018/64/GA016772;STREC hN;int i,n;FILE *out;n=fun( s,h );pr
14、intf(The %d lowest score :n,n);for(i=0;in; i+)printf(%s %4dnn,hi.num,hi.s);printfCXn1);out = fopen(K:k0124010001out.dat”,w”);fprintf(out, dn”,n);for(i=0;in; i+)fprintf(out, ”4dn“,hi.s); fclose(out);第3套题一、程序填空题,函数fun的功能是:将自然数110以及它们的平方根写到名为给定程序中,留姒tunAJ乜脚左::恂 inyfile3. txt的文本文件中,焦后再购匠话 请在程序的下划枝处填入正赢内
15、容果。注意:.顺序嘴嚣便程序得出正确的结源程序存放在考生文件隽下的BLANK1. C中。不停增注或删行,也不宿更改程序的结构!#include#includeint fun(char FILE *fp;*fname)int i,n;float x;if(fp=fopen(fname, w)=NULL) return 0;for(i=l;i=10;i+)/* f0 und*Ifprintf(_1_,%d %fn,i,sqrt(double)i);printf(nSucceed! n);一2-;printf(nThe data in file :n);/* fo und*Iif(fp=fopen(
16、_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 1;main() char fname=myfile3.txt;fun(fname);二、程序改错题L的动 DI中改 Mo序要 野不 程正: 定改意 给请注入n结行 萧删 .确或 是正行 能出增 功! 的能不 数它, 函使数 uni,函include include void fun (int n, int *a ) int j, p, t;for (j
17、 = 0; jn-l; j+) P=j;* * * * *found * for (i=j+l; iai)t=i;if (p!=j)t = aj;aj=ap;ap=t;) void putarr( int n, int *z) int i;for (i = 1; i = n; i+, z+ ) printf( “4d”,*z );if (!(i%10 ) printf( nn); printf(Hn);)main() int aa20=9,3,0,4,l,2,5,6,8,10,7, n=ll;printf( HnnBefore sorting %d numbers:n, n ); putarr
18、( n, aa );fun( n, aa);printf( nAfter sorting %d numbers:n, n ); putarr( nz aa );)二、程序编写题数田的 榛C 数在 整放。入 改填 修中 管节 不括 据花 数的 的UnN.在 得仅 :51文黑E欠 - 曝骷蠹 虹野,文其 将-慰用 匚妣妣b=序ma 疣速弱1鬻在45源函句 机:放4分主语 谓是次当野干 fur式依,:改若 数方数如意勿的 函的位翟请写 并个 编合和/include void fun(int a, int b, long *c)main() int a,b; long c;void NONO ();p
19、rintf(lnput a b:);scanf(%d%d/ &a, &b);fun(a, b, &c);printf(The result is: %ldn,c);NONO();)void NONO ()/*本函数用于打开档,输入数据,调用函数,输出数据,关闭档。*/FILE *rf *wf;int i, a,b ; long c;rf = fopen(”K:k0124010001in.dat”, T);wf = fopenCKiWkOlWAOlOOOlWout.daf/w);for(i = 0 ; i 10 ; i+)fscanf(rf, d,%d”, &a, &b);fun(az b, &
20、c);fprintf(wfz a=%d/b=%d/c=%ldn/ a, b, c);)fclose(rf);fclose(wf);第4套题一、程序填空题果。注意:给定程序的功能是:朗用函数fun将揖定源文件中的内: 隹中,复制度功町函数该回信为1,失敕时返回徒为0。在一工.一口一 而由容输出列终魏屏幕。主函数中源文件名放在变量sfname中,目标文件名放 请在程序由下划线处填入正确的内容并把下划线删除,使程序得出正确的结源秩序存放在考生文件隽下的BLANK1. C中。不容增忏或删行,也不得更改程序的结构!#include include int fun(char *source, char *
21、target) FILE *fs,*ft; char ch;/* * fo und* iif(fs=fopen(sou rce,1)=N U LL)return 0;if(ft=fopen(target, ,w)=NULL)return 0;printf(nThe data in file :n);ch=fgetc(fs);while(!feof(2) putchar( ch );/* *found* */fputc(ch,_3_);ch=fgetc(fs);fclose(fs); fclose(ft);printf(nn);return 1;)main() char sfname20 =nm
22、yfilel,tfname20=myfile2;FILE *myf;intchar c;myf=fopen(sfnamezw);printf(nThe original data :nn);for(i=l; i30; i+) c=A+rand()%25;fprintf(myf/%c/c); printf(”c”,c); fclose(myf);printf(Hnn);if (fun(sfname, tfname) printf(Succeed!);else printf(Fail!);二、程序改错题给定:次取出,一黑缪遇翳患箴灌蠡鬻糠惑上为偶数的数依 例如,当S中的羲为:87653142时,t
23、电的数为:8642。请改正程序中的错误,使它能债出正确的结果。注意:不要改动main函数,不南曾行或蒯行,也不得更改程序的结构!#include void fun (long s, long *t)int d;long sl=l;*t = 0;while ( s 0) d = s%10;/* * f0 und*/ if (d%2=0) *t=d* sl+ *t;si *= 10;)/* * * * *found *I s= 10;main() long s, t;printf(nPlease enter s:); scanf(%ld, &s);fun(s, &t);printf(The res
24、ult is: %ldn, t);三、程序编写题函数fun的功能是:将s所指 数的字符外,其余的全都删除;串 中。木为偶数、同时ASCII的一个新串放在用例如,若s所指字符串中的内爸为:ABCDEFG123456”,其史字付A的ASCII码 值为奇数,因此应当删除;其中翔B的ASCH码值为偶数,但左数组中的下标为 寄数,因此也应当删除;而生存2的ASCH碣值为偈数,所在数组中的下标也为偶 薮因此不应当删除,其它裱曲类推。最信t所指钿数组中的内容应是246”。注意:部分源程序存在文件PR0G1.C中。请勿改协)主函薮mai通其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。i
25、nclude #include void fun(char *s, char t) main()(char s100, t100;void NONO ();printf(nPlease enter string S:); scanf(H%sH/ s);fun(s, t);printf(nThe result is: %sn, t);NONO();void NONO ()/*本函数用于打开档,输入数据,调用函数,输出数据,关闭档。*/charsflOO, t100;FILE *rf, *wf;int i;rf = fopen(K:k0124010001in.dat;r);wf = fopenCK
26、iWkOlWAOlOOOlWout.daf/w);for(i = 0 ; i 10 ; i+)fscanf(rf, ,%s/ s);fun(s, t);fprintf(wf, %sn, t);)fclose(rf);fclose(wf);第5套题一、程序填空题域中露露已建立一个带有头结点的单向链表,链表中的各结点按结点数链技。函数fun的功能是:起形参x的值放入一个新结点并插 加,及八/口各Z吉点数据域的值仍保持逋增有序。请在建序黄下划线处填入正确的内容并把下胡聂删除,使程序得出正确的结入到链表名果。注意:源皆序存放在考生文件隽下的BLANK1.C中。 不容增存或删行,也不备更改程序的结构!#
27、includeinclude#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);/* * fo und*/s-data=1;q=h;p=h-next;while(p!=NULL & xp-data) /* *found* */q=一2-; p=p-next;s-next=p;/* *found* */q-next=3;SLIST *creatlist(int *a)
28、 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 list is NULL!n);else printf(nHead);do printf(-%d,p-data); p=p-next; while(p!=NULL); printf(-Endn);)main() SLIST *head; int x;i
29、nt 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(headzx);printf(nThe list after inserting:n); outlist(head);)二、程序改错题oo胧:构 慵是吉 加该昵 i_t应序 岫出程 嗣则更 M ,得 数02不 整2。也 -二 ml/ 翻的删 .耒确或 息O0正希 能2出增 功:日酉行 工 mEz/ / 勺E冗匕
30、已1、 魏妒 发出使数 娄壮,函然in C 指Kia L2,的动 DI25中改 MO.序要 序入程不 鲁正: 定若改意 给,请注口 文 例#include long fun (long num) /* *foun(j * /long k; dok*=num%10;/* *砧口门(*/num=10; while(num); return (k); main()long n;printf(nPlease enter a number:); scanf(%ld,&n);printf(n%ldn,fun(n);)程序编写题道编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函 数值遢回
31、。例如:若直5门课程的成绩是:90.5, 72, 80, 61.5, 55则菌致函指为:71.80。注意:部分源程序存在文件PR0G1.C中。请勿改割主函薮mai通其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。Sinclude float fun (float *a, int n) main()float score30=90.5, 72, 80, 61.5, 55, aver;void NONO ();aver = fun( score, 5 );printf( nAverage score is: %5.2fn”,aver);NONO ();void NONO ()
32、/*本函数用于打开档,输入数据,调用函数,输出数据,关闭档。*/FILE *fp, *wf;int i,j;float aver; score5;fp = fopen(K:k0124010001in.dat;,rH);wf = fopenCKiWkOlWAOlOOOlWout.daf/w);for(i = 0 ; i 10 ; i+)for(j = 0; j 5 ; j+) fscanf(fp,%t&scorej);aver = fun(score, 5);fprintf(wfz %5.2fn, aver);)fclose(fp);fclose(wf);第6套题一、程序填空题函数警邮编藐罐酷短
33、髓舞杳:,在main函数中将多次调用fun数据,并释放该塔瓦横链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件隽下的BLANK1.C中。 不辱增注或删行,也不律更改程序的结构!#includeinclude#define N 8 typedef struct list int data;struct list *next; SLIST;void fun( SLIST *p) SLIST *t, *s;t=p-next; s=p;while(t-next != NULL) S=t;/*t=t-*found*/1 1 ;)/* * fo u
34、nd* * / printf( %d ,2);s-next=NULL;/*found*/ free(_3_);SLIST *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=0;return h; void outlist(SLIST *h) SLIST *p;p=h-next;if (p=NULL) printf(nThe list is NULL!n); else printf(nHead);do printf(
35、,-%d/p-data); p=p-next; while(p!=NULL); printf(-Endn);)main() SLIST *head;int aN=ll,12,15,18,19,22,25,29;head=creatlist(a);printf(nOutput from head:n); outlist(head);printf(nOutput from tail: n);while (head-next != NULL)fun(head);printf(nn);printf(nOutput from head again :n); outlist(head);22 , 。的行
36、ba确删 de正或 出行 出蜃应能不 则它, ,使数 cd,函 ab限link 为错maL ow-s 动 DI中改 Mo内存要孱若程不程中,正. 定串如改意 给宿请注字变include /* * * found *I fun (char a) if(*a) fun(a+l);printf(%c *a);) main() char s10=abcd;printf(处理前字符串=%sn处理后字符串二,s);fun(s);printf(n);三、程序编写题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符更长度的函数),函数返回较长的字符串。若两个字符串 则返回第一
37、个字符串。例如,输入beijing shanghai (为回车键), 函数将退回shanghai 度相同,注意:邯分源请勿改动主国 你编写的若干语句存存在文件PR0G1.C中。其它函数中的任何内容,仅在函数fun的花括号中填入#include char *fun(char *s, char *t)main()char a20zb20;void NONO ();printf(lnput 1th string:1);gets( a);printf(lnput 2th string:);gets( b);printf(%sn,fun (a, b);NONO ();void NONO ()/*本函数用
38、于打开档,输入数据,调用函数,输出数据,关闭档。*/FILE *fp, *wf;int i;char a20, b20;fp = fopen(”K:k0124010001in.dat”Jr”);wf = fopen(K:k0124010001out.dat/w);for(i = 0 ; i 10 ; i+)fscanf(fp, %s %sz a, b);fprintf(wf, fun(a, b);)fclose(fp);fclose(wf);第7套题一、程序填空题给定矍序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递 增有序链箍。函数fun的功能是:删除链表中数据域值相同的结点,使
39、之只操留一果。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结 注意:源皆序存放在考生文件大下的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-next;while(q!=NULL) if (p-data=q-data) p-next=q-next;/* f0 und*Ifree(_1一);/* * fo und*!q=p-2) elsep=q;/* * found*/q=q-_3_;)SLIST *creatlist(int *a) SLIST *h/*p/*q; int i;h=p=(S