《历年计算机二级c语言上机试题.docx》由会员分享,可在线阅读,更多相关《历年计算机二级c语言上机试题.docx(119页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 .填空给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5.dat的二进制文件中。请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK 1. c中不得增行或删行,也不得更改程序的结构!void check ();int fun (1*std)2 *fp; int i;if (fp=fopen (myf ile5. dat,wb)=NULL) return (0);printf(nOutput data to f
2、ile !n);for(i=0; iN; i+)fwrite(&stdi, sizeof(STYPE),1,3);fclose(fp);return (1);修改给定程序M0DI1. C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串后面。例如:当s中的字符串为:“ABCDE”时,则他中的字符串应为:“ABCDEEDCBA”。请改正程序中的错误,使他能得出正确的结果。注意:不要改动main函数,不能增行或删行,也不得更改程序的结构!void fun (char *s, char *t) int i, si;si = strlen (s);for(
3、 i=0; i=sl; i +)ti= si;for (i=0; isl; i+)tEsl+i= s Esl-i-1;tsl=,0,;程序函数fun的功能是:将两个两位数的正整数a, b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在 c数的百位和个位上。例如:a=45, b=12时,调用该函数后,c=4152.注意:部分源程序存在文件PR0G1.C中。数据文件IN. DAT 中的数据不得修改。请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。答案:B: STYPE FILE fpM:
4、for(i =0; i si ; i+) t2*sl=0;P:*c=(a/10)*1000+(b/10)*100+(a)*10+(b);2.填空给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标记。然后将文件的内容读出显示在屏幕上。文件的读写分别有自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK 1. c中不得增行或删行,也不得更改程序的结构! main () FILE *fp;if (fp=fopen(
5、myfile4. txt,w)=NULL) printf C open fail!n,/); exit (0); WriteText(fp);fclose (fp);if (fp=fopen (myf ile4. txt,r)=NULL) printf (z,open fail!n,/); exit (0);ReadText (fp);fclose (fp);void WriteText (FILE 1) char str81;printf(nEnter string with -1 to end :n); gets(str);while(strcmp(str,-1)!=0)fputs(2,
6、fw); fputs(n, fw);gets(str);void ReadText(FILE *fr) char str81;printf(nRead file and output to screen :n);fgets (str,81, fr);wh i1e (!feof (fr)printf (%s,3);fgets(str,81, fr);修改给定程序M0DI1. c中函数fun的功能是:从低位开始取出长整形变量s中的奇数位上的数,依次构成一个新数放在t中,高位仍放在高位,低位仍放在低位。例如:当s中的数为:7654321时,t中的数为:7531请改正程序中的错误,使他能得出正确的结果
7、。注意:不要改动main函数,不能增行或删行,也不得更改程序的结构!ttinclude void fun (long s, long t) long sl=10;*t = s %10;while ( s 0) s = s/100;*t = s * si +*t;si = sl*100;)程序函数fun的功能是:将两个两位数的正整数a, b合并成一个整数放在C中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如:a=45, b=12时,调用该函数后,c=1524.注意:部分源程序存在文件PR0G1.C中。数据文件IN. DAT 中的
8、数据不得修改。请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。2、 B:*fw str strM: long *t si = sl*10;P:*c=(b/10)*1000+(a)*100+(b)*10+(a/10);3.填空给定程序中,函数fun的功能是:将自然数P10以及它们的平方根写到名为myfile3txt的文本文档中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK 1. c中不得增行或删行,也不得更改程序的结构!int fun(char *fnam
9、e ) FILE *fp; int i, n; float x;if (fp=fopen (fname,w)=NULL) return 0;for (i=l;i=10;i+)fprintf(1,d i, sqrt(double)i);printf(XnSucceed!n);2;printf(nThe data in file :n);if (fp=fopen (3,”/)NULL)return 0;fscanf (fp,&n,&x);while(!feof (fp) printf (%d n,x); fscanf(fp,&n,&x); fclose(fp);return 1;修改给定程序M0D
10、I1. c中fun函数的功能是:将n个无序整数从小到大排序。fun ( int n, int *a ) int i, j, p, t;for ( j =0; jn-l ; j+) P = j;for ( i=j+1; iai)t=i;if ( p!=j ) t = aj; aj= ap; ap= t;)程序函数fun的功能是:将两个两位数的正整数a, b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在 c数的百位和个位上。例如:a=45, b=12时,调用该函数后,c=2514注意:部分源程序存在文件PR0G1.C中。数据文件IN
11、. DAT 中的数据不得修改。请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。3、 B: fp fclose(fp) fnameM: i0) d 二 s;if (d%2=0)*t=d* sl+*t;si *=10;)s =10;程序函数fun的功能是:将两个两位数的正整数a, b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在 c数的百位和个位上。例如:a=45, b=12时,调用该函数后,c=5142注意:部分源程序存在文件PROG1. C中。数据文件IN. DAT 中的数据不得修改
12、。请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。4、B:r” fs ftM:(d%2=0) s /=10;P:*c=(a)*1000+(b/10)*100+(a/10)*10+(b);5.填空给定程序中已建立一个带有头结点的单向链表,链表中的各节点按结点数据域中的数据递增有序链表。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后结点数据域的值仍保持递增有序。typedef struct list int data;struct list *next; SLIST;void fun ( SLIST *h, int x) SLIS
13、T *p,*q,*s;s=(SLIST *)malloc(sizeof(SLIST);s-data=1;q=h;p=h-next;wh i1e (p!=NULL & xp-data) q=2;p=p-next;s-next=p;q-next二3;修改给定程序M0DI1. C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输入应该是:20.若输入:202,则输出应该是:0.long fun (long num) Jlong k;do k*=num ;num=10; while(num);return (k);请编写一个函数fun,它的功能是:它的功能是:计算n门
14、课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.805、 B: x p sM: long k=l; num/=10;P: int i; float ave=0.0; for(i=0; inext; s=p;while(t-next != NULL) s=t;t=t-1: printf C %d ,2);s-next=NULL;free (3);修改给定程序MODH.C中函数fun的功能是:将字符串中的字符按逆序输出,单补改变字符串中的内容。例如,若字符串味abed,则应输出:debafun (char a) if (*a
15、 ) fun(a+1);printf (,%c,/*a);程序请编写一个函数fun,他的功能是:比较两个字符串的长度(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入 beijingRshanghai(为回车键),函数将返回shanghai6、 B: next t-data tM: fun (char *a) printf (c,*a);P: int i; char *p=s,*q=t;for (i=O;*p &*q; i+)Jp+; q+;if (*p =0&*q =0) return s ; if (*p) return
16、s ; else return t ;7.填空给定程序中建立一个带有头结点的单向链表,链表中的各节点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个 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;free (1);q=p-2;else P=q;q=q-3修改给定程序M0D
17、I1. C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。void fun(int a, int n) int i, j, t, p;for (j =0;j n-1;j+)P = jfor (i = j;i n; i+)if(ai B: q next nextM: p = j; p=i;P: int i ;*n=0;for (i=7; inext;while (p!=1) n+;if (p-data-ch) return 2;else p=p-next;return 0;修改给定程序MODH.C中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符,回车符
18、及换行符)输入字符串是用结束输入。fun ( char *p) int i, t; char c 80;For (i =0, t =0; pi; i+)if(!isspace(*(p+i) ct+=pi;ct=0; strcpy (p,c);程序请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)例如:若输入例bc4EFg”,则应输出例Bc4Efg”。答案:8、 B: NULL n head,chM: for ct=0;P: int i ; for(i =1; i =,a& ss inext;while (p)(*n)+;P=
19、p-2;main () SLIST *head;int aN=12,87,45,32,91,16,20,48, num;head=creatlist(a); outlist(head);fun (3,&num);printf (,nnumber=%dn/,, num);修改给定程序MODH.C中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数返回值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL例如:当字符串中的内容为“abcdefabcdx” t中的内容为“ab”时,输出的结果应是:abcdx当字符串中的内容为“abcdefabcdx”
20、 t中的内容为“abd”时,则程序输出未找到信息not be foundchar * fun (char *s, char *t )char *p ,*r,*a;a = Null;while (*s ) P = s; r = t;while (*r )if ( r = p ) r+; p+;else break;if (*r =0) a = s;s+;return a ;)程序函数fun的功能是:将s所指字符串中除了下标问为偶数,同时ASCH值也为偶数的字符外,其余的全部删除:串中剩余字符所形成的一个新串放在t所指的数组中例如,若s所指的字符串中的内容为“ABCDEFG123456”,其中字符
21、A的ASCH码味奇数,因此应当删除,其中字符b 的ASCH码值为偶数,但是在数组中的下标为基数,因此也当删除;答案9、 B:*n next headM: a = NULL;*r =*pP: int i, j =0;for(i =0; i next;while (p)s+= p-1;P=p-2;return s;修改给定程序MODH.C中函数fun的功能是:将s所指字符串中出现的与tl所指字符串相同的字串全部替换成t2所指字符串,所形成的新串放在w所指的数组中,在此处,要求tl 和t2所指字符串的长度相同。int fun (char *s, char *tl, char *t2, char *w
22、)int i; char *p ,*r,*a;strcpy( w, s );while (*w ) p = w; r = tl;while ( r ) if (*r =*p ) r+; p+;else break;if (*r =0) a = w; r = t2;while (*r )*a =*r; a+; r+w +二 strlen (t2);else w+;)程序函数fun的功能是;将s所指字符串下标为偶数的字符删除,串中剩余字符形成的新串放在t所指的数组中例如:当s所指字符串中的内容为:“ABCDEFGHIJK”在t所指数组中的内容应是“BDFHJ”10、 B: data next he
23、adM:*r r+;P: int i, j =0; for(i =1; i strlen(s); i+=2) t j+=si; tj=0;11.填空人员记录有编号和出生年月日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出数据中的编号为空串。1 fun(STU *std, char *num) int i; STU a=,9999,99,99;for (i=0; iN; i+)if ( strcmp (2, num)0)return (3);return a;修改给定程序M0DI1. C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的
24、字串的个数作为函数返回值例如,当s所指字符串中的内容为:例bcdabfab”,t所指字符串的内容为:“ab”则函数返回整数3 int fun (char *s, char *t)int n; char *p ,*r;n =0;while (*s ) P = s; r = t;while (*r ) if (*r =*p )r+; p+else break;if ( r =0)n+;s+;return n;函数fun的功能是:将s所指字符串中ASCH值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符B的ASCII码值
25、为偶数.答案:11、B: STU stdi. num stdiM: p+;*r=0;P: int i, j =0; for (i =0; i strlen(s); i+) if (si%2) tj+= si; tj=0;12.填空人员的记录由编号和出生年月日组成N名成员的数据已在主函数中存入结构体数组std中,函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同事有函数值返回满足指定条件的人数 int fun(STU *std, STU *k, int year) int i,n=0;for (i=0; iN; i+)if (1year)kn+=2;re
26、turn (3);修改给定程序MODI程。C的功能是:读入一个整数k(2k1000),打印她的所有因子例如2310,则应输出2,3,5,7,11IsPrime ( int n ); int i, m;m =1;for ( i =2; i n; i+)if !( n%i ) m =0; break ;return ( m );设计已知学生的记录有学号成绩构成,N名学生的数据已经存入结构体数组a中。编写函数fun,函数功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数12、B: stdi. year stdi n M:分号去掉 if (!(
27、 n%i )P: int i, max = a0. s, j =0; for(i =1; i N ; i+) if (max ai. s) j = i ; max = ai.s ;*s = aj;13 .填空给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号,姓名和3们课程的成绩,函数fun的功能是将该学生的各科成绩都乘以一个系数avoid show(STU tt) int i;printf(,%d %s :,tt. num, tt. name);for(i=0; i3; i+)printf (,z%5. If”, tt. score Ei);printf(n);void mo
28、dify(1*ss, float a) int i;for(i=0; i2*=a;main () STU std=1,Zhanghua”,76.5,78.0,82.0;float a;printf(nThe original number and name and scores :n);show(std);printf (nlnput a number :); scanf&a);modify (3, a);printf (,znA result of modifying :n); show(std);)修改给定程序MODI。C中函数fun的功能是:求k!(k0return (k*fun (k-
29、l);else if ( k=0) return IL;设计程序定义了 N*N的二维数组。并在主函数中自动赋值,请编写函数fun,函数的功能是:使数组左下三角元素的值乘以 n例如:若n的值为3, a数组的值为13、B: STU scorei&std M:() k=0 P: int i, j; for (i =0; i N ; i+) for(j =0; j stdl.num) temp=std0; std0=stdl; stdl=temp; if (std0. numstd2. num) temp=std0; std0=std2; std2=temp; if (stdl. numstd2. n
30、um) temp=stdl; stdl=std2; std=temp; main () PERSON std=5,Zhanghu”,2,WangLi”,6,LinMin; int i;fun (3);printf(nThe result is :n);for(i=0; i3; i+)printf (,%d,%sn,stdi. num, stdi. name);修改给定程序MODI1. c中函数fun的功能是:将m个字符串连接起来组成一个新串,放入pt所指存储区中 int fun ( char str10, int m, char *pt )Int k, q, i ;for ( k =0; k
31、m; k+) q = strlen ( str k);for (i=0; iq; i+)pti= strk, i;pt += q ;pt 0=0;设计程序定义了 N*N的二维数组,并在主函数中自动赋值,请编写函数fun,函数的功能是:使数组左下三角元素中的值全部值014 、 B:*std PERSON std M: int strki P: int i, j; for(i =0; i N ; i+) for(j =0; j = i; j+) aij:0;15 .填空给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在主函数中输出 STD fun(ST
32、D std口, int n) STD max; int i;max=1;for(i=l; in; i+)if(max. age2) max=stdi;return max;main ()STDstd5=aaa,17,bbb,16,ccc”,18,ddd,17,eee,15);STD max;max=fun(std,5);printf(nThe result:n);printf(nName :%s, Age :%dn”,3, max. age);修改给定程序M0DI1. c中函数fun的功能是:实现两个整数的交换例如给a和b分别输入60和65,输出为:a=65 b=60 void fun ( i
33、nt a, b ) int t;t=b;b=a;a=t;设计请编制一个函数fun, tt指向一个M行N列的二维数组,求二维数组每列中最小元素,并以此放入pp所指一维数组中o 二维数组中的数已在主函数中赋予15、B:*std stdi. age max. name M: int *b t =*b;*b =*a ;*a = t; P: int i, j, min, k ; for(i =0; i N ; i+) min = tt0i; k =0; for(j =1; j min=tt ji; k = j ; ppi=ttki;16.填空程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息
34、,函数fun的功能是输出这位学生的信息void show (STU 1) int i;printf (z,n%d %s %c %d-%d-%d, tt. num, tt. name, tt. sex, tt. birthday, year,tt. birthday, month,tt. birthday.day);for(i=0; i3; i+)printf (%5. lf,2);printf(n);main ()STUstd=1,Zhanghua, M,1961,10,8,76.5,78.0,82.0;printf (,znA student data:n,z);show(3);修改给定程序
35、M0DI1. c中函数fun的功能是:求出数组中最大数和次大数,并把最大数和a【0】中的数对调,次最大数和a 1中的书对调int fun ( int * a, int n ) int i, m, t, k ;for(i=0;i2;i+)m=0;for (k=i+l;kam) k=m;t=a i ; a i =a m; a m=t;设计请编写一个函数unsigned fun , w是一个大与10的无符号整数,若w是n为的整数,函数求出w的低n-l位的数作为函数值返回例如w为5923则函数返回923;16 、 B: tt tt.scorei std M: m=i m=kP: if(w10000)
36、w %=10000; else if (w1000) w %=1000; else if (w100) w %=100; else if (w10) w %=10; returnw ;17 .填空给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。Ss所指字符串数组中共有M个字符串,且串长Nvoid fun(char (*ss)N) int i, j, k, nM; char tN;for(i=0; iM; i+) ni=strlen(ssi); for(i=0; iM-l; i+) k=i;for(j=1; jnj)2; if (k!=i) strc
37、py(t,ssi);strcpy(ssi, ssk);strcpy (ss k,3);nk=ni;给定程序MODE C中函数fun的功能是:判断ch中字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后 ttinclude void fun (char str, char ch ) while (*str &*str != ch ) str+; if (*str = ch ) str 0= ch;str 1=,0,;设计请编制一个函数fun,函数功能是吧s所指字符串中的内容逆值17、 B: i+1 k=j t M: char *str !=0P: char bN; int i =0, j ; for(j = strlen(s)-1; j =0; j) bi+= sj; bi=0; strcpy(s, b);18.填空给定程序中,函数fun的功能是:求出形参ss所指的字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长,字符串数组中共有M个字符串 void fun(char (*ss)N) int i, j, k=0, n, m, len;for(i=0; in)n=len;1二i ;fo