《c语言》期末复习大题.docx
操作题(68题=50+18)1.改错题(50)51、在考生文件夹下给定的程序modi1.c中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,或在横线处境上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi1.c*/include<stdio.h>intfun()inta33,sum;inti,j;*A*found*/for(i=0;i<3;i+)for(j=0;j<3;j+)/*found*m*/scanf("%d"aij);)for(i=0;i<3;i+)sum=sum*aii;printf("Sum=%dn,zsum);)main)fun();/modil.c参考答案:*founcl*/sum=l;*found*/scanf("%d,"aijJ);52、考生文件夹下的给定程序modi2.c的功能是:读入一个整数k(2WkW10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。请改正程序中的语法错误,使程序能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi2.c*/#include"conio.h"#include"stdio.h"#include"stdlib.h"*/*found*Isprimefintn);inti,m;m=l;for(i=2;i<n;i+)*found*/if!(n%i)m=O;break;return(m);)main)intj,k;systemC'cls");printf("nPaseenteranintegernumberbetween2and10000")jscanf(',%d,k);printf(,'nnTheprimefactor(三)of%dis(are)");for(j=2;j<=k;j+)if(!(k%j)&&(ISPrime(j)printf("n%4d"J);printf(',n");)/mod12.c参考答案:*found*/lsprime(n)*foun(j*/if(l(n%i)53、在考生文件夹卜的给定程序modi3.c中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。清改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi3.c*/include<stdio.h>include<conio.h>#defineMAX1.INE20fun(char*pstr6)iti,j;char*p;for(i=0;i<5;i+)for(j=i+l;j<6;j+)*founc*/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)A11");for(i=0;i<6;i+)scanf(',%s"zpstri);fun(pstr);printf("Thestringsaftersortingn");for(i=0;i<6;i+)printf(',%sn"zpstri);)/modi3.c参考答案:*fou*/if(strcmp(*(pstr+i)z*(pstr+j)>O)/*found*/*(pstr+i)=*(pstr+j);54、在考生文件夹下的给定程序modi4.c中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi4.c*/#incIude<conio.h>#include<stdio.h>include<stdlib.h>longfun(intk)(*founcl*/ifk>0return(k*fun(k-l);/*found*/elseif(k-0)return11.;)main()intk=10;SyStem("cis");Prinlf("%d!=%ldn”,k,fun(k);)7Inodi4.c参考答案:*founcl*/if(k>0)*fOtind*/elseif(k=0)56、在考生文件夹下的给定程序modi6.c中,函数fun的功能姑:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi6.c*/#include<stdio.h>*/*Iinclude<conio.h>/found*voidfun(intazb)intt;/*found*t=b;b=a;a=t;)main)inta,b;Printf("Entera,b:");SCanf(”d%d,&a,&b);fun(&a,&b);printf(,a=%db=%dn,azb);)/modi6.c参考答案:*ufound*/voidfun(int*a,int*b)*found*/t=*b;*b=*a;*a=t;57、在考生文件夹下的给定程序modi7.c中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi7.c*/#include<conio.h>#include<stdio.h>#include<stdlib.h>intfun(intk)intm=0zmc=0J;while(k>=2)&&(mc<10)*founc*/if(k%13=0)(k%17=0)m=m+k;mc+;k-;)returnm;*founc*/main()system(',cls");printf(',%dn",fun(500);)/modi7.c参考答案:*founc*/if(k%13=0)(k%17=0)*founcl*/)60、在考生文件夹下的给定程序modi10.c中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi10.c*/#include<stdio.h>#defineN20voidfun(intazintn)inti,j,t,p;for(j=OJ<n-lJ+)*nfound*/P=Jfor(i=j;i<n;i+)if(ai<ap)*found*/P=j;t=ap;ap=aj;aj=t;)main()intaN=9,6,8,3,-l,i,m=5;Printf("排序前的数据:");for(i=0;i<m;i+)Printf(',%d",ai);Printf("r);fun(a,m);Printf("排序后的数据:");for(i=0;i<m;i+)printf(',%d"zaihprintf"n");)/modi10.c参考答案:*foun(j*found*63、在考生文件夹下的给定程序modil3.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。1112×23×3m×m例如:若m中的值为:5,则应输出:0.536389o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*modi13.c*/#include<conio.h>#include<stdio.h>#include<stdlib.h>doublefun(intm)doubley=1.0;inti;/*found*/*found*y-=V(i*i);return(y);)main)intn=5;system(',cls");printf("nTheresultis%lfn",fun(n);/modi13.c参考答案:*/*found*for(i=2;i<=m;i+)*-found*y-=.o(i*i);64、在考生文件夹下的给定程序modil4.c中,函数fun的功能是