《2022年二级C语言机试试题 .pdf》由会员分享,可在线阅读,更多相关《2022年二级C语言机试试题 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、请补充 fun函数,该函数的功能:按 0到 9统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如,输入 g1ters4543123564879fgfd,结果为 1=2,3=2,5=2,7=1,9=1。请勿改动主函数main与其他函数中的任何内容,仅在 fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#define N 500 void fun(char*t,int count)int i,j;int a10;char*p=t;for(i=0;i=0&*p=9)_2_;p+;for(i=1
2、,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);printf(n);【答案】(1)*p(2)a*p-0+(3)countj=ai下列给定程序中,函数fun的功能是从字符串 s中删除所有小写字
3、母 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);printf(The original string:);puts(str);fun(str);printf(The string after deleted
4、:);puts(str);printf(nn);【答案】(1)strj+=stri;(2)strj=0;M名学生的成绩已在主函数中放入一个带头节点的链表结构中,a指向链表的头节点。请编写函数 fun,它的功能是求出平均分,由函数值返回。例如,若学生的成绩是69、85、91、72、64,则平均分应当是76.200。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include#define M 5 struct list double s;struct list*next;typedef struct lis
5、t SCORE;double fun(SCORE*a)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -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-next;printf(a);do printf(-%4.1f,p-s);p=p-next;while(p!=0);printf(nn);main()d
6、ouble 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!=NULL)/如果头指针不指向链表尾,就累加链表中成绩 aver+=a-s;/累加成绩a=a-next;/指向下一个节点 aver/=M;/求平均分return aver;请补充 fun函数,该函数的
7、功能是逐个比较s1、s2两个字符串对应位置中的字符,把ASCII 值小或相等的字符依次存放到s数组中,形成一个新的字符串。例如,若 s1中的字符串为 aBCDeFgH,s2中的字符串为 ABcd,则s中的字符串应为ABCD。请勿改动主函数main与其他函数中的任何内容,仅在 fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include void fun(char*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()ch
8、ar 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,计算如下公式的值:1nn23121x11x,x11x,x11x1,x名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -例如,若 n=4,则应输出 0.600000。请修改程序中的错误,得出正确的结果。注意:不要改动 ma
9、in函数,不能增行或删行,也不能更改程序的结构。#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=n;i+)请编写函数 fun,其功能是计算并输出给定10个数的方差:1011012101)(101kkkky,yyyF其中例如,给定的
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;printf(nThe original data is:n);for(i=0;i10;
11、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函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#define N 80 char*fun(c
12、har*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 isn);printf(s1%s s2,fun(s1,s2);【答案】(1)*t1*t2(3)0下列给定的程序中,函数fun的功能是应用递归算法求某数b的平方根。求平方根的迭
13、代公式如下:)00(1xbx21x例如,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;return y;main()double n;printf(Enter n:);scanf(%lf,&n);printf(The square root of%lf
14、is%lfn,n,fun(n,1.0);【答案】(1)double fun(double b,double x0)(2)if(fabs(x1-x0)=1e-6)程序定义了 M M的二维数组,并在主函数中自动赋值。请编写函数fun(int M,int n),该函数的功能是使数组左下半三角元素中的值乘以 n。例如,若 n的值为 0,matrix 数组中的值为:288490471matrix,则返回主程序后,matrix 数组中的值应为:000400470请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#inclu
15、de#include#define M 3 void 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,n);printf(THE RESULTn);for(i=0;iM;i+)for(j=0;jM;j+)printf(%4d,matrixij);printf(n
16、);out=fopen(outfile.dat,w);for(i=0;iM;i+)for(j=0;jM;j+)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -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;j+)matrixij=matrixij*n;请补充 fun函数,该函数的功能是寻找两个整数之间的所有素数(包括这两个整
17、数),把结果保存在数组a中,函数返回素数的个数。例如,输入 3和18,则输出为 357111317。请勿改动主函数main与其他函数中的任何内容,仅在 fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include#include#define N 500 int 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;break;if(_3_)ak+=j;return k;main()int n=0,m=0,i,k;int aN;printf(Inp
18、ut 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,计算如下公式的值:n121s311例如,若输入 5,则应输出-0.283333。请修改函数 fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构。#include#inc
19、lude 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.0/i;/s-=(double)1/i(2)return s;请编写函数 fun,其功能是将两个两位数的正整数 a、b合并成一个整数放在c中。合并的方式:将a的十位和个位依
20、次放在c的百位和个位上,b的十位和个位依次放在c的千位和十位上。例如,当 a=45,b=12,调用该函数后,名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -c=1425。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#include void fun(int a,int b,long*c)main()int a,b;long c;FILE*out;printf(Input a,b:);scanf(%d%d,&a,&b);fun(a,b,&c);printf(The result i
21、s:%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函数,该函数的功能是计算并输出下列多项式的值:503213211211S11例如,若主函数从键盘给n输入 50后,则输出为 S=1.960784。请勿改动主函数main与其他函数中的任何内容,仅在 fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#include _1_
22、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 下列给定程序中函数fun的功能:输出 N行N列正方阵,然后求两条对角线上各元素之和,返回此和数。请修改程序中的错误,得出正确的结果。注意:不要改动
23、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-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
24、,4,5,1,2,3,5,4,3,2,1;printf(nThe sum of all elements on 2 diagnal is%d.,fun(N,x);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -【答案】(1)int fun(int n,int aN)(2)printf(%4d,aij);请编写一个函数fun,它的功能是计算n门课程的平均分,计算结果作为函数值返回。例如,若有 5门课程的成绩是88、92、80、61.5、55;则函数的值为75.30。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程
25、序给出如下。#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+=bi;ave/=m;return ave;请补充 main函数,该函数的功能是计算每个学生科目的平均分,并把结果保存在数组a
26、中。例如,当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 5 main()int i,j;static float scoreNM=89,78,90,71,61,78.5,84,83,65,63,88,91.5,89,93,95,72.5,65,56,75,77;float aN;for
27、(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中的字符串应为asddsa。请修改程序中的错误,得出正确的结果。注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构。#include#include#i
28、nclude 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);fun(str,s);printf(The result is:%sn,s);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -【答案】(1)for(i=0;is1;i+)
29、(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()int x,y;long z;FILE*out;printf(Input x,y:);scanf(%d%d,&x,&y);f
30、un(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结构体中,给定程序的功能是找出成绩最高的学生记录,通过形参返回主函数。请勿改动主函数main与其他函数中的任何内容,仅在 fun函数的横线上填写所需的若干表达式或语句。注意:部分源
31、程序给出如下。#include#include#define N 10 typedef 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,90,07,79,08,61,09,80,10,71,m;int i;printf(The original datan);for(i=0;iN;i+)printf(No=%s Mark=%d
32、n,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 double fun(int m)double result=1.0;/*error*/while(m1&m100)result*=-m;/*error*/_填 空_ 名师资料总结-精品资料欢迎下载-名
33、师精心整理-第 8 页,共 10 页 -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的个位和百位上。例如,当 x=12,y=34,调用该函数后,z=1423。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
34、注意:部分源程序给出如下。#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+)fun(x+44,x+55,&z);fprintf(out,%ldn,z);fclose(out);【答案】*z=(x/10)*1000+(x%10)*10+(y%10)*100+y/10
35、;请补充 main函数,该函数的功能是输出一个NN矩阵,要求周边元素赋值0,非周边元素赋值 1。仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。注意:部分源程序给出如下。#include#define N 10 main()int aNN;int i,j,n;printf(Please input n:n);scanf(%d,&n);for(i=0;in;i+)for(j=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
36、;j+)printf(%4d,aij);【答案】(1)aij=0(2)aij=1下列给定的程序中,函数fun的功能是交换主函数中两个变量的值。例如,若变量x中的值为 1,y中的值为 2,则程序运行后 x中的值为2,y中的值为 1。请修改程序中的错误,得出正确的结果。注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构。#include /*error*/void fun(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);名师
37、资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -【答案】(1)void fun(int*a,int*b)(2)t=*a;*a=*b;*b=t;学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数 fun,它的功能是把小于等于平均分的学生数据放在l所指的数组中,大于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#include#define M 10 typedef struct char num 10;dou
38、ble 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,11,79,12,73;SCORE low M,t;FILE*out;int i,j,n;double ave;ave=fun(stu,low,&n);printf(The%d student data which is lower than%7.3f:n,n,ave);for(i=0;in;i+)printf(%s%4.1fn,lowi.num,lowi.s);printf(
39、n);out=fopen(outfile.dat,w);fprintf(out,%dn%7.3fn,n,ave);for(i=0;in-1;i+)for(j=i+1;jn;j+)if(lowi.slowj.s)t=lowi;lowi=lowj;lowj=t;for(i=0;in;i+)fprintf(out,%4.1fn,lowi.s);fclose(out);double fun(int m)main()int m;double f;FILE*out;printf(nInput m:);scanf(%d,&m);f=fun(m);printf(nnf=%fnn,f);out=fopen(ou
40、tfile.dat,w);for(m=0;m10;m+)fprintf(out,%fn,fun(m+20);fclose(out);【答案】double aver=0.0;/放平均分的变量设置初始化int i,j=0;for(i=0;iM;i+)/求总和aver+=ci.s;aver/=M;/求平均分for(i=0;iM;i+)/循环判断每一个成绩与平均分的关系if(ci.s=aver)/如果成绩小于等于平均分*(l+j)=ci;/将小于等于平均分的成绩存入 l j+;*n=j;/将小于平均分的个数 j赋值给n return aver;/返回平均分名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -