机试练习21120套含答案.docx
- 文档编号:14671071
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:45
- 大小:26.07KB
机试练习21120套含答案.docx
《机试练习21120套含答案.docx》由会员分享,可在线阅读,更多相关《机试练习21120套含答案.docx(45页珍藏版)》请在冰点文库上搜索。
机试练习21120套含答案
第十一套
请补充main函数,该函数的功能是:
输出一个矩阵,要求非周边元素赋值0,周边元素赋值1。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#defineN10
voidmain()
{
intbb[N][N];
intI,j,n;
system("CLS");
printf("\nInputn:
\n");
scanf("%d",&n);
for(I=0;I for(j=0;j { if(【1】) bb[I][j]=1; else 【2】; } printf("\n***theresult***\n"); for(I=0;I { printf("\n\n"); for(j=0;j printf("%4d",bb[I][j]); } } 【参考答案】 (1)i==0||i==n-1||j==0||j==n-1 (2)bb[i][j]=0 下列给定程序中,函数fun的功能是: 用递归算法计算斐波拉契级数列中第n项的值。 从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,…例如,若给n输入7,该项的斐波拉契级数值为13。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include longfun(intg) { /*************found**************/ switch(g); {case0: return0; /*************found**************/ case1;case2: return1; } return(fun(g-1)+fun(g-2)); } voidmain() { longfib;intn; printf("Inputn: ");scanf("%d",&n); printf("n=%d\n",n); fib=fun(n); printf("fib=%d\n\n",fib); } 【参考答案】 (1)错误: switch(g);正确: 去掉分号 (2)错误: case1;case2: return1; 正确: case1: case2: return1; 请编写函数fun,函数的功能是: 求出二维数组周边元素之和,作为函数值返回。 二维数组中的值在主函数中赋予。 例如,若二维数组中的值为 13579 29994 69998 13570 则函数值为61。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #defineM4 #defineN5 intfun(inta[M][N]) { } voidmain() { FILE*wf; intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}}; inti,j,y; system("CLS"); printf("Theoriginaldatais: \n"); for(i=0;i {for(j=0;j printf("%6d",aa[i][j]); printf("\n"); } y=fun(aa); printf("\nThesun: %d\n",y); printf("\n"); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%d",y); fclose(wf); /*****************************/ } 【参考答案】 intfun(inta[M][N]) { inti,j,sum=0; for(i=0;i for(j=0;j if(i==0||i==M-1||j==0||j==N-1)/*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/ sum=sum+a[i][j];/*将周边元素相加*/ returnsum; } 第十二套 请补充main函数,该函数的功能是: 从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。 结果仍然保存在原串中。 例如,输入"abcdef",指定字符为"e",则输出"abcd"。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #defineN80 voidmain() { intI=0; charstr[N]; charch; system("CLS"); printf("\nInputastring: \n"); gets(str); printf("\nInputacharator;\n"); scanf("%c",&ch); while(str[I]! ='\0') { if(str[I]==ch) 【1】 【2】; } str[I]=【3】; printf("\n***displaystring***\n"); puts(str); } 【参考答案】 (1)break; (2)i++或++i或i+=1或i=i+1 (3)'\0' 下列给定程序中,函数fun的功能是: 求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #defineN20 /*************found**************/ voidfun(int*a,intn); { intI,m,t,k; for(I=0;I { /*************found**************/ m=0; for(k=I+1;k if(a[k]>a[m]) m=k; t=a[I]; a[I]=a[m]; a[m]=t; } } main() { intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; system("CLS"); for(i=0;i printf("%d",b[i]); printf("\n"); fun(b,n); for(i=0;i printf("%d",b[i]); printf("\n"); } 【参考答案】 (1)错误: voidfun(int*a,intn); 正确: voidfun(int*a,intn) (2)错误: m=0;正确: m=i; 编写函数fun,它的功能是: 利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。 xn+1=cos(xn) 迭代步骤如下: (1)取x1初值为0.0; (2)x0=x1,把x1的值赋给x0; (3)x1=cos(x0),求出一个新的xl; (4)若x0-x1,的绝对值小于0.000001,则执行步骤(5),否则执行步骤 (2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出结果Root=0.739085。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include floatfun() { } main() { FILE*out; floatf=fun(); printf("Root=%f\n",f); /******************************/ out=fopen("out.dat","w"); fprintf(out,"%f",f); fclose(out); /******************************/ } 【参考答案】 floatfun() { floatx1=0.0,x0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>=1e-6); returnx1; } 第十三套 请补充main函数,该函数的功能是: 从键盘输入3个整数,然后找出最大的数并输出。 例如,输入12,45,43,最大值为45。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include voidmain() { inta,b,c,max; system("CLS"); printf("\nInputthreenumbers: \n"); scanf("%d,%d,%d",&a,&b,&c); printf("Thethreenumbersare: %d,%d,%d\n",a,b,c); if(a>b) 【1】; else 【2】; if(max 【3】; printf("max=%d\n",max); } 【参考答案】 (1)max=a (2)max=b(3)max=c 下列给定程序中,函数fun的功能是: 将十进制正整数m转换成进制数,并按位输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 请改正函数fun中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*************found**************/ voidfun(intm,intk); {intaa[20],i; for(i=0;m;i++) { /*************found**************/ aa[i]=m/k; m/=k; } for(;i;i--) /*************found**************/ printf("%d",aa[i]); } main() { intb,n; printf("\nPleaseenteranumberandabase: \n"); scanf("%d%d",&n,&b); fun(n,b); printf("\n"); } 【参考答案】 (1)错误: voidfun(intm,intk); 正确: voidfun(intm,intk) (2)错误: aa[i]=m/k; 正确: aa[i]=m%k; (3)错误: printf("%d",aa[i]); 正确: printf("%d",aa[i-1]); 假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include voidfun(char*a) { } voidmain() { FILE*wf; chars[81],t[81]="****A*BC*DEF*G*******"; printf("Enterastring: \n"); gets(s); fun(s); printf("Thestringafterdeleted: \n");puts(s); /******************************/ wf=fopen("out.dat","w"); fun(t); fprintf(wf,"%s",t); fclose(wf); /*****************************/ } 【参考答案】 voidfun(char*a) { char*p=a; while(*p=='*') p++; /*指针p指向字符串第一个字母*/ for(;*p! ='\0';p++,a++) *a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/ *a='\0'; /*在字符串最后加上结束标记符*/ } 第十四套 函数fun的功能是: 从三个形参a、b、c中找出中间的数,作为函数值返回。 例如,当a=3,b=5,c=4时,中间的数为4。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include intfun(inta,intb,intc) {intt; t=(a>b)? (b>c? b: (a>c? c: 【1】)) : ((a>c)? 【2】 : ((b>c)? c: 【3】)); returnt; } main() { inta1=3,a2=5,a3=4,r; r=fun(a1,a2,a3); printf("\nThemiddlenumberis: %d\n",r); } 【参考答案】 (1)a (2)a(3)b 下列给定程序中,函数fun的功能是: 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。 其中x和y不相等,z和y不等。 例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include /*************found**************/ #defineFU(m,n)(m/n) floatfun(floata,floatb,floatc) {floatvalue; value=FU(a+b,a-b)+FU(c+b,c-b); /*************found**************/ return(Value); } voidmain() {floatx,y,z,sum; printf("Inputxyz: : "); scanf("%f%f%f",&x,&y,&z); printf("x=%f,y=%f,z=%f\n",x,y,z); if(x==y||y==z) {printf("Dataerror! \n"); exit(0);} sum=fun(x,y,z); printf("Theresultis: %5.2f\n",sum); } 【参考答案】 (1)错误: #defineFU(m,n)(m/n) 正确: #defineFU(m,n)(m)/(n) (2)错误: return(Value); 正确: return(value); 请编写函数fun,该函数的功能是: 判断字符串是否为回文,若是则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。 回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #defineN80 intfun(char*str) { } main() { chars[N]; FILE*out; char*test[]={"1234321","123421","123321","abcdCBA"}; inti; printf("Enterastring: "); gets(s); printf("\n\n"); puts(s); if(fun(s)) printf("YES\n"); else printf("NO\n"); /************************************/ out=fopen("out.dat","w"); for(i=0;i<4;i++) if(fun(test[i])) fprintf(out,"YES\n"); else fprintf(out,"NO\n"); fclose(out); /************************************/ } 【参考答案】 intfun(char*str) { inti,n=0,fg=1; char*p=str; while(*p) /*将指针p置位到字符串末尾,并统计字符数*/ { n++; p++; } for(i=0;i /*循环比较字符*/ if(str[i]==str[n-1-i]); /*相同,什么都不作*/ else /*不同,直接跳出循环*/ { fg=0; break; } returnfg; } 第十五套 函数fun的功能是: 统计长整数n的各位上出现数字1、2、3的次数,并用外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为: c1=3c2=1c3=2。 注意: 部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include intc1,c2,c3; voidfun(longn) { c1=c2=c3=0; while(n) { switch(【1】) { case1: c1++;【2】; case2: c2++;【3】; case3: c3++; } n/=10; } } main() { longn=123114350L; fun(n); printf("\nTheresult: \n"); printf("n=%ldc1=%dc2=%dc3=%d\n",n,c1,c2,c3); } 【参考答案】 (1)n%10 (2)break(3)break 下列给定程序中函数fun的功能是: 先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #include voidfun(char*s,char*t) { intI,s1; s1=strlen(s); for(I=0;I /*************found**************/ t[I]=s[s1-1]; for(I=0;I t[s1+I]=s[I]; t[2*s1]='\0'; } voidmain() {chars[100],t[100]; system("CLS"); printf("\nPleaseenterstrings: "); scanf("%s",s); fun(s,t); printf("Theresultis: %s\n",t); } 【参考答案】 (1)错误: t[i]=s[s1-1];正确: t[i]=s[s1-1-i];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 练习 21120 答案