《二级C语言机试试题11.doc》由会员分享,可在线阅读,更多相关《二级C语言机试试题11.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流二级C语言机试试题11.精品文档.请补充fun函数,该函数的功能:按0到9统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如,输入g1ters4543123564879fgfd,结果为1=2,3=2,5=2,7=1,9=1。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # define N 500void fun(char *t,int count) int i,j; int
2、a10; char *p=t; for(i=0;i=0 & *p=9) _2_; p+; for(i=1,j=0;i10;i=i+2,j+) _3_;main() char sN; int count10,i; printf(nPlease enter a char string:); gets(s); printf(nThe original stringn); puts(s); fun(s,count); printf(nThe countber of letern); for(i=0;i5;i+) printf(n); printf(%d=%d ,2*i+1,counti); print
3、f(n);【答案】(1)*p(2)a*p-0+(3)countj=ai下列给定程序中,函数fun的功能是从字符串s中删除所有小写字母c。请修改程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include void fun(char *str) int i,j; for(i=j=0;stri!=0;i+) /*error*/ if(stri!=c) strj=stri; /*error*/ stri=0;main() char str100; printf(Enter a string with c: ); gets(str); pr
4、intf(The original string :); puts(str); fun(str); printf(The string after deleted:); puts(str); printf(nn);【答案】(1)strj+=stri; (2)strj=0;M名学生的成绩已在主函数中放入一个带头节点的链表结构中,a指向链表的头节点。请编写函数fun,它的功能是求出平均分,由函数值返回。例如,若学生的成绩是69、85、91、72、64,则平均分应当是76.200。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#
5、 include # include # define M 5struct list double s; struct list *next;typedef struct list SCORE;double fun(SCORE *a)SCORE *creat (double *stu) SCORE *a,*p,*q; int i=0; a=p=(SCORE*) malloc (sizeof (SCORE); p-s=0; while(is=stui; i+; p-next=q; p=q; p-next=0; return a;outlist (SCORE *a) SCORE *p; p=a-n
6、ext; printf( a ); do printf(-%4.1f,p-s); p=p-next; while(p!=0); printf(nn);main () double stuM=69,85,91,72,64,ave; SCORE *a; FILE *out; a=creat(stu); outlist(a); ave=fun(a); printf(ave=%6.3fn,ave); out=fopen(outfile.dat,w); fprintf(out,%6.3f,ave); fclose (out);【答案】double aver=0.0;/初始化平均值while(a!=NUL
7、L) /如果头指针不指向链表尾,就累加链表中成绩 aver+=a-s; /累加成绩 a=a-next; /指向下一个节点aver/=M; /求平均分return aver;请补充fun函数,该函数的功能是逐个比较s1、s2两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到s数组中,形成一个新的字符串。例如,若s1中的字符串为aBCDeFgH,s2中的字符串为ABcd,则s中的字符串应为ABCD。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include void fun(cha
8、r *a,char *b,char *s) int i=_1_; while(*a _2_ *b) if(*a*b) si=*b; else si=*a; if(*a) a+; if(*b) b+; i+;main() char s110=aBCDeFgH,s210=ABcd,s80=0; fun(s1,s2,s); printf(The string s1:); puts(s1); printf(The string s2:); puts(s2); printf(The result s:); puts(s);【答案】(1)0(2)|下列给定程序中,函数fun的功能是根据整型参数n,计算如下
9、公式的值:例如,若n=4,则应输出0.600000。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include /*error*/fun(int n) double x=1; int i; /*error*/ for(i=2;in;i+) x=1.0/(1+x); return x;main() int n; printf(nPlease enter n: ); scanf(%d,&n); printf(x%d=%lfn,n,fun(n);【答案】(1)double fun(int n)(2)for(i=2;i=
10、n;i+)请编写函数fun,其功能是计算并输出给定10个数的方差:例如,给定的10个数为76.0、65.0、72.0、85.0、57.0、67.0、45.0、92.0、44.0、58.0,则输出为F=14.982990。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include double fun(double y10)main() double f,y10=76.0,65.0,72.0,85.0,57.0,67.0,45.0,92.0,44.0,58.0; int i; FILE *out;
11、printf(nThe original data is :n); for(i=0;i10;i+) printf(%6.1f,yi); printf(nn); f=fun(y); printf(f=%fnn,f); out=fopen (outfile.dat,w); fprintf(out,%f,f); fclose (out);【答案】int i,j;double f=0.0,f1=0.0; /初始化变量for(i=0;i10;i+) /求公式中y的值 f1+=yi;f1/=10;for(j=0;js2。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达
12、式或语句。注意:部分源程序给出如下。# include # include # define N 80char *fun(char *s1,char *s2) char *t1=s1,*t2=s2; while(*t1 & *t2) if(_1_) return ; t1+; t2+; if(*t1=*t2) return =; if(*t1=_3_) return ;main() char s1N,s2N; printf(Please input s1:n); gets(s1); printf(Please input s2:n); gets(s2); printf(The result i
13、sn); printf(s1 %s s2,fun(s1,s2);【答案】(1)*t1*t2(3)0下列给定的程序中,函数fun的功能是应用递归算法求某数b的平方根。求平方根的迭代公式如下:例如,2的平方根值为1.414214。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include /*error*/fun(double b,double x0) double x1,y; x1=(x0+b/x0)/2.0; /*error*/ if(abs(x1-x0)=1e-6) y=fun(b,x1); else y=x1
14、; return y;main() double n; printf(Enter n: ); scanf(%lf,&n); printf(The square root of %lf is %lfn,n,fun(n,1.0);【答案】(1)double fun(double b,double x0)(2)if(fabs(x1-x0)=1e-6)程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数fun(int M,int n),该函数的功能是使数组左下半三角元素中的值乘以n。例如,若n的值为0,matrix数组中的值为:,则返回主程序后,matrix数组中的值应为:请勿改动主函数main
15、与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include # include # define M 3void fun(int matrixM,int n)main() int matrixMM,n,i,j; FILE *out; printf(The array n); for(i=0;iM;i+) for(j=0;jM;j+) matrixij=rand()%10; printf(%4d,matrixij); printf(n); n=rand()%4; printf(n=%4dn,n); fun(matrix,
16、n); printf(THE RESULTn); for(i=0;iM;i+) for(j=0;jM;j+) printf(%4d,matrixij); printf(n); out=fopen (outfile.dat,w); for(i=0;iM;i+) for(j=0;jM;j+) matrixij=i*j+1; fun(matrix,9); for(i=0;iM;i+) for(j=0;jM;j+) fprintf(out,%4d,matrixij); fprintf(out,n); fclose (out);【答案】int i,j;for(i=0;iM;i+) for(j=0;j=i
17、;j+) matrixij=matrixij*n;请补充fun函数,该函数的功能是寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组a中,函数返回素数的个数。例如,输入3和18,则输出为357111317。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # define N 500int fun(int n,int m,int aN) int i,j,k=0,flag; for(j=n;j=m;j+) _1_; for(i=2;ij;i+) if(_2_) flag=0
18、; break; if(_3_) ak+=j; return k;main() int n=0,m=0,i,k; int aN; printf(Input nn); scanf(%d,&n); printf(Input mn); scanf(%d,&m); for(i=0;im-n;i+) ai=0; k=fun(n,m,a); for(i=0;ik;i+) printf(%4d,ai);【答案】(1)flag=1(2)j%i=0(3)flag=1 下列给定程序中函数fun的功能是:传入一个整数n,计算如下公式的值:例如,若输入5,则应输出-0.283333。请修改函数fun中的错误或在横线处
19、填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include double fun(int n) double s=1.0; int i; /*error*/ for(i=2;i=n;i+) s=1.0-1/i; /*error*/ _填 空_main() int n; printf(nPlease enter 1 integer numbers:n); scanf(%d,&n); printf(nnThe result is %lfn,fun(n);【答案】(1)s=s-1.0/i; / s-=1
20、.0/i;/s-=(double)1/i(2)return s;请编写函数fun,其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式:将a的十位和个位依次放在c的百位和个位上,b的十位和个位依次放在c的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1425。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(int a,int b,long *c)main () int a,b; long c; FILE *out; printf(Inpu
21、t a,b:); scanf (%d%d,&a,&b); fun(a,b,&c); printf(The result is: %ldn,c); out=fopen (outfile.dat,w); for(a=0;a10;a+) fun(a+28,a+82,&c); fprintf(out,%ldn,c); fclose (out);【答案】*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;请补充fun函数,该函数的功能是计算并输出下列多项式的值:例如,若主函数从键盘给n输入50后,则输出为S=1.960784。请勿改动主函数main与其他函数中的任何内容,仅
22、在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include _1_ fun(int n) int i,j; double sum=0.0,temp; for(i=1;i=n;i+) temp=0.0; for(j=1;j=i;j+) temp+=_2_; sum+=1.0/temp; return sum;main() int n; double s; printf(Please input n: ); scanf(%d,&n); s=fun(n); printf(The result is: %fnn,s);【答案】(1)double(2)j下列给定程序中函
23、数fun的功能:输出N行N列正方阵,然后求两条对角线上各元素之和,返回此和数。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include # define N 5/*error*/int fun(int n,int a) int i,j,sum=0; printf(nThe %d x %d matrix:n,N,N); for(i=0;in;i+) /*error*/ for(j=0;jn;j+) printf(%4f,aij); printf(n); for(i=0;in;i+) sum+=aii+ain-i-
24、1; if(n%2!=0) sum-=an/2n/2; return(sum);main() int xNN=1,2,3,4,5,2,3,4,5,1,3,4,5,1,2,4,5,1,2,3,5,4,3,2,1; printf(nThe sum of all elements on 2 diagnal is %d.,fun(N,x);【答案】(1)int fun(int n,int aN)(2)printf(%4d,aij);请编写一个函数fun,它的功能是计算n门课程的平均分,计算结果作为函数值返回。例如,若有5门课程的成绩是88、92、80、61.5、55;则函数的值为75.30。请勿改动主
25、函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include float fun(float *b,int m)main() float s10=88,92,80,61.5,55,aver; FILE *out; aver=fun(s,5); printf(nAverage s is :%5.2fn,aver); out=fopen (outfile.dat,w); fprintf(out,%5.2f,aver); fclose (out);【答案】float ave=0.0;int i;for(i=0;im;i+) ave+=
26、bi; ave/=m;return ave;请补充main函数,该函数的功能是计算每个学生科目的平均分,并把结果保存在数组a中。例如,当scoreNM= 89,78,90,71,61,78.5,84,83,65,63,88,91.5,89,93,95,72.5,65,56,75,77时,四个学生的平均分为:77.874.791.369.1。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。# include # define N 4# define M 5main() int i,j; static float scoreNM= 89,78,90,7
27、1,61, 78.5,84,83,65,63, 88,91.5,89,93,95, 72.5,65,56,75,77 float aN; for(i=0;iN;i+) _1_; for(i=0;iN;i+) for(j=0;jM;j+) _2_; ai/=M; for(i=0;iN;i+) printf(n Student%dtaverage=%5.1f,i+1,ai);【答案】(1)ai=0(2)ai+=scoreij;下列给定程序中函数fun的功能:先将在字符串str中的字符按正序存放到s串中,然后把str中的字符按逆序连接到s串的后面。例如,当str中的字符串为asd时,则s中的字符串应
28、为asddsa。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include # include void fun(char *str,char *s) int i,s1; s1=strlen(str); /*error*/ for(i=0;i=s1;i+) si=stri; for(i=0;is1;i+) ss1+i=strs1-i-1; /*error*/ ss1=0;main() char str100,s100; printf(nPlease enter string:); scanf(%s,str); f
29、un(str,s); printf(The result is: %sn,s);【答案】(1)for(i=0;is1;i+)(2)s2*s1=0;请编写函数fun,其功能是将两个两位数的正整数x、y合并成一个整数放在z中。合并的方式是将x的十位和个位依次放在z的个位和百位上,y的十位和个位数依次在z的千位和十位上。例如,当x=12,y=34,调用该函数后,z=3241。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(int x,int y,long *z)main()
30、 int x,y; long z; FILE *out; printf( Input x,y: ); scanf(%d%d,&x,&y); fun(x,y,&z); printf( The result is :%ldn,z); out=fopen (outfile.dat,w); for(x=0;x10;x+) fun(x+77,x+66,&z); fprintf(out,%ldn,z); fclose (out);【答案】*z=(y/10)*1000+(x%10)*100+(y%10)*10+x/10;已知学生的记录由学号和学习成绩组成,N名学生的数据已存入student结构体中,给定程序
31、的功能是找出成绩最高的学生记录,通过形参返回主函数。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # define N 10typedef struct s char num10; int s; student;fun(student STU,student *s) _1_ a; int i; a=STU0; for(i=1;ia.s) _2_=STUi; *s=_3_;main() student STUN= 01,81,02,89,03,66,04,87,05,77,06,9
32、0,07,79,08,61,09,80,10,71 ,m; int i; printf(The original datan); for(i=0;iN;i+)printf(No=%s Mark=%dn,STUi.num,STUi.s); fun(STU,&m); printf(The highst : %s,%dn,m.num,m.s);【答案】(1)student(2)a(3)a下列给定程序中,函数fun的功能是计算整数m的阶乘。请修改程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include
33、 double fun(int m) double result=1.0; /*error*/ while(m1 & m100) result*=-m; /*error*/ _填 空_main() int m; printf(Enter an integer 100: ); scanf(%d,&m); printf(nn%d!=%1gnn,m,fun(m);【答案】(1)result*=m-;(2)return result;请编写函数fun,其功能是将两个丙位数的正整数x、y合并成一个整数放在z中。合并的方式:将x的十位和个位依次放在z的千位和十位上,y的十位和个位依次放在z的个位和百位上。
34、例如,当x=12,y=34,调用该函数后,z=1423。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include void fun(int x,int y,long *z)main () int x,y; long z; FILE *out; printf(Input x,y:); scanf (%d%d,&x,&y); fun(x,y,&z); printf(The result is: %ldn,z); out=fopen (outfile.dat,w); for(x=0;x10;x+) f
35、un(x+44,x+55,&z); fprintf(out,%ldn,z); fclose (out);【答案】*z=(x/10)*1000+(x%10)*10+(y%10)*100+y/10;请补充main函数,该函数的功能是输出一个NN矩阵,要求周边元素赋值0,非周边元素赋值1。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。# include # define N 10main() int aNN; int i,j,n; printf(Please input n:n); scanf(%d,&n); for(i=0;in;i+) for(j=
36、0;jn;j+) if(i=0|i=n-1|j=0|j=n-1) _1_; else _2_; printf(The result is:n); for(i=0;in;i+) printf(n); for(j=0;jn;j+) printf(%4d,aij);【答案】(1)aij=0(2)aij=1下列给定的程序中,函数fun的功能是交换主函数中两个变量的值。例如,若变量x中的值为1,y中的值为2,则程序运行后x中的值为2,y中的值为1。请修改程序中的错误,得出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include /*error*/void fun(
37、int a,int b) int t; /*error*/ t=a;a=b;b=t;main() int x,y; x=1; y=2; fun(&x,&y); printf(the result is %d,%dn,x,y);【答案】(1)void fun(int *a,int *b)(2)t=*a;*a=*b;*b=t;学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数fun,它的功能是把小于等于平均分的学生数据放在l所指的数组中,大于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # define M 10typedef struct char num 10; double s;SCORE;double fun(SCORE *c,SCORE *l,int *n)main () SCORE stuM=03,76,02,69,04,85,01,91,07,72,08,64,06,87,09,60,