《C语言》改错题库.docx
2.改错题(50)51、在考生文件夹下给定的程序InOCli1.C中,fun函数的功能是:先从键盘上输入个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi1.c*/#indude<stdio.h>intfun()inta33zsum;itij;*founcj*/sum=0;for(i=0;i<3;i+)for(j=0;j<3;j+)*founcj*/scanf("%d"aij);)for(i=0;i<3;i+)sum=sum*aii;printf(,Sum=%dn,sum);)main()fun();/modil.c参考答案:*foupd*/sum=l;*founc*/scanf("%d,"aij);52、考生文件夹下的给定程序modi2.c的功能是:读入一个整数k(2WkW10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。请改正程序中的语法错误,使程序能得出正确的结果。注意:不要改动Inain函数,不得增行或删行,也不得更改程序的结构!*modi2.c*/#include"conio.h"#include"stdio.h"#include"stdlib.h"*Isprimefintn);intizm;m=l;for(i=2;i<n;i+)*found*/if!(n%i)m=0;break;return(m);)main()intj;system("cls");printf("nPleaseenteranintegernumberbetween2and100OOSCanf("%d",&k);printf("nnTheprimefactor(三)of%dis(are):",k);for(j=2;j<=k;j+)if(!(k%j)&&(ISPrime(j)printf("n%4d"J);printf("n");)/modi2.c参考答案:*found*/lsprime(n)*found*/if(n%i)53、在考生文件夹下的给定程序modi3.c中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi3c*/#include<stdio.h>#include<conio.h>ftdefineMAX1.INE20fun(char*pstr6)itij;char*p;for(i=0;i<5;i+)for(j=i+l;j<6;j+)*found*/if(strcmp(*(pstr+i),pstr+j)>O)p=*(pstr+i);*found*/*(pstr+i)=pstr+j;*(pstr+j)=p;)main()inti;char*pstr6,str6MAX1.INE;system("cls");for(i=0;i<6;i+)pstri=stri;printf("nEnter6string(lstringateachline):n");for(i=0;i<6;i+)scanf("%s"zpstri);fun(pstr);printf("Thestringsaftersorting:n");for(i=0;i<6;i+)printf("%sn",pstri);)/modi3.c参考答案:*/*found*if(strcmp(*(pstr+i)(pstr+j)>O)*/*found*(pstr+i)=*(pstr+j);54、在考生文件夹下的给定程序modi4.c中,函数FUn的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800»请改正程序中的错误,使它能得出正确的结果。注意:不要改动Inain函数,不得增行或删行,也不得更改程序的结构!*modi4.c*/#include<conio.h>#include<stdio.h>include<stdlib.h>longfun(intk)/*fourd*/ifk>0return(k*fun(k-l);/*found*/elseif(k=0)return11.;)main()intk=10;SyStCm("cls");Printf("%d!=%ldn”,k,fun(k);)7modi4.c参考答案:*fourd*/if(k>0)/*found*/elseif(k=0)56、在考生文件夹下的给定程序Inodi6.c中,函数fun的功能是:实现两个整数的交换.例如给a和b分别输入:60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi6.c*/#include<stdio.h>#include<conio.h>/*foundvoidfun(intazb)intt;/*foundt=b;b=a;a=t;*/*本*/)main()intazb;printf("Entera/b:");scanf("%d%d"/&az&b);fun(&a,&b);printf("a=%db=%dn",a,b);)/modi6.c参考答案:/*木*found*4c*4c*/voidfun(int*ajnt*b)/*found*/t=*b;*b=*a;*a=t;57、在考生文件夹下的给定程序modi7.c中,函数FUn的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使它能得出正确的结果。注意:不要改动Inain函数,不得增行或删行,也不得更改程序的结构!*modi7.c*/#include<conio.h>ftinclude<stdio.h>#include<stdlib.h>intfun(intk)intm=0,mc=0,j;while(k>=2)&&(mc<10)*found*/if(k%13=O)(k%17=0)m=m+k;mc+;k-;)returnm;*found*/main()system(',cls");printf("%dn",fun(500);)/modi7.c参考答案:*found*/if(k%13=0)(k%17=0)4c*4c*found*4c*4c/)60、在考生文件夹下的给定程序Inodil0.c中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得出正确结果。注意:不要改动Inain函数,不得增行或删行,也不得更改程序的结构!*modi10c*/#include<stdio.h>#defineN20voidfun(inta,intn)iti,j,t,p;*/for(j=O;j<n-l;j+)/*foundP=J*/for(i=j;i<n;i+)if(ai<ap)/*foundP=j;t=ap;ap=aj;aU=t;)main()intaN=9,6,8,3,-l,i,m=5;Printf("排序前的数据:");for(i=0;i<m;i+)printf("%d",ai);printf("n");fun(a,m);Printf("排序后的数据:");for(i=0;i<m;i+)printf("%d",ai);printf("n");/modi10.c参考答案:*found*/P=j;/*found*/63、在考生文件夹下的给定程序modil3.c中,函数FUn的功能是:根据整型形参m的值,计算如下公式的值。1112×23×3m×m例如:若In中的值为:5,则应输出:0.536389o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi13.c*/include<conio.h>#include<stdio.h>include<stdlib.h>doublefun(intm)doubley=1.0;inti;*found*/*found*4c*Iy-=l(i*i);return(y);)main()intn=5;system("cls");printf("nTheresultis%lfn",fun(n);/modi13.c参考答案:*foundfor(i=2;i<=m;i+)*found*/*