大学生计算机程序设计题库.docx
一、程序设计共116题(共计1160分)第1题(10.0分)【程序设计】功能:从键盘上输入任意实数,求出其所对应的函数值。z=e的X次幕(x>10)z=log(x+3)(x>-3)z=sin(x)(cos(x)+4)*/#include<math.h>include<stdio.h>doubley(floatx)(/*Program*/*End*)main()(floatx;scanf("%f,×);printf("y=%n",y(x);yzj();getch();)yzj()(FILE*IN,*OUT;intn;floati;doubleo;IN=fopen("in.dat"z"r");if(IN=NLL)(printf("ReadFileError");)OUT=fopen(',out.dat","w");if(OUT=NLL)(printf("WriteFileError");for(n=0;n<10;n+)(fscanf(IN'%f",8ti);o=Y(i);fprintf(OU-G"%ldn"zo);)fclose(IN);fclose(OUT);)答案:doublez;if(x>10)z=exp(x);elseif(x>-3)z=log(x+3);elsez=sin(x)(cos(x)+4);return(z);第2题(Io.0分)【程序设计】功能:在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积,并在fun()函数中输出.*/include"stdio.h"voidmain()intizjzsza33;for(i=0;i<3;i+)for(j=0;j<3;j+)scanf("%d,aij);)s=fun(a);printf("Sum=%dn",s);yzj();getch();)intfun(inta33)*Program*/*End*)yzj()(FILE*INOUT;intm;intn;iti33;into;IN=fopen("in.dat","r");If(IN=NULL)(printf(,ReadFileError");)OUT=fopen("out.dat","w");if(OUT=NLL)(printf("WriteFileError");)for(m=0;m<3;m+)for(n=0;n<3;n+)fscanf(INz"%d"z8imn);o=fun(i);fprintf(OUT'%dn,o);getch();)fclose(IN);fclose(OUT);)答案:intsum;iti,j;sum=l;for(i=0;i<3;i+)sum=sum*aii;returnsum;第3题(IO.0分)*【程序设计】功能:求1到100之间的偶数之积。include"stdio.h"doublefun(intm)*Program4c*/*End*/)voidmain()(printf("ji=%n,fun(100);yzj();getch();)yzj()(FILE*IN,*OUT;intilNJ;doubledOUT;IN=fopen("in.dat","r");If(IN=NULL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OUT=fopen("out.dat","w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<5;i+)(fscanf(IN'%d",8ilN);dOUT=fun(ilN);fprintf(OUTz"%n"zdOUT);)fclose(IN);fclose(OUT);)答案:doubley=l;inti;for(i=l;i<=m;i+)if(i%2=O)y*=i;returny;第4题(IO.0分)/*【程序设计】功能:求出NXM整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。例如:输入的数组为:12341561218910112求出的最大数为18,行坐标为2,列坐标为1。*/ftdefineN4ftdefineM3include<stdio.h>intRow,Col;voidmain()(intaNMJJzmax,row,col;printf("inputaarray:");for(i=0;i<N;i+)for(j=0;j<M;j+)scanf(',%d"aij);for(i=0;i<N;i+)(for(j=OJ<MJ+)printf("%d",aiD);printf("n");)max=fun(a);printf("max=%d,row=%dzcol=%d"zmaxzRow,Col);getch();yzj();)intfun(intarrayNM)*Program*/*End*/)yzj()(FILE*IN,*OUT;intilNNM,iOU11i,j;IN=fopen("in.dat","r");If(IN=NULL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OUT=fopen("out.dat","w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<N;i+)for(j=0;j<M;j+)fscanf(IN,"%d"ilNij);iOUT=fun(ilN);fprintf(OT"%d%d%dn"JOi;RowzCoI);fclose(IN);fclose(OUT);)答案:intmaxj,j;max=array00;Row=O;CoI=O;for(i=0;i<N;i+)for(j=0;j<M;j+)if(max<arrayij)max=arrayij;Row=i;Co=j;)return(max);第5题(IO.0分)【程序设计】功能:编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序。ftinclude<stdio.h>voidswap(int*a,int*b)*Prograr*/*End*)main()(intx,y,z;SCanf("%d%d%d",&x,&y,&z);if(x<y)swap(&x,&y);if(x<z)swap(&x,&z);if(y<z)swap(&y,&z);printf("%3d%3d%3d,x,y,z);yzj();getch();)FILE*INOUT;intmzn;iti2;into;IN=fopen("in.dat"z"r");If(IN=NULL)(printf("ReadFileError");)OUT=fopen("out.dat","w");If(OUT=NULL)(printf("WriteFileError");)for(n=0;n<3;n+)(for(m=0;m<2;m+)(fscanf(IN,"%d"im);)swap(&i0,&il);fprintf(0T"%dn"J0);fprintf(OUT'%dn"Jl);fclose(IN);fclose(OUT);答案:intk;k=*a;*a=*b;*b=k;第6题(IO.0分)【程序设计】功能:求一个给定字符串中的数字字母的个数。*/#include"stdio.h"intfun(chars)(/*Program*/*End*/)voidmain(void)(charstr="Beijing2008"intk;k=fun(str);printf(,k=%dn'');yzj();getch();)yzj()(FILE*INOUT;charslN80;intiOUTi;IN=fopen("in.dat"z"r");if(IN=NLL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");OUT=fopen("out.dat","w");If(OUT=NULL)printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");fscanf(IN'%s",slN);iOUT=fun(slN);fprintf(OTz,%cln",iOT);fclose(IN);fclose(OUT);)答案:inti,k=O;for(i=0;si!='0'i+)if(si>='0'&&si<='9")k+;returnk;第7题(IO.0分)/*【程序设计】功能:对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如:原来的字符串为CEAedCa,排序后输出为CedcEAaoinclude<stdio.h>include<ctype.h>include<conio.h>intfun(char*s,intnum)*Program4c*/*End*/voidmain()(chars10;crscr();Printf(U输入7个字符的字符串gets(s);fun(s,7);printf(,n%s"zs);getch();NONO();)NONO()(inti;chara100;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat"z"w");for(i=0;i<3;i+)(fscanf(rf,%s,z&a);fun(az7);fprintf(wf,"%s"za);fprintf(wf,"");)fclose(rf);fclose(wf);)答案:intij;chart;for(i=l;i<num-l;i+)for(j=i+l;j<num-l;j+)if(s<s)t=si;si=sD;sj=t;第8题(IO.0分)*【程序设计】功能:编写函数fun求1+2+3+.+n的和,在main函数中由键盘输入n值,并输出运算结果。请编写fun函数。例如:若n值为2,则结果为3。*/include<stdio.h>longfun(intn)(/*Program*/*End*)intyzj();voidmain(void)(intn;longintresult;scanf("%d',n);result=fun(n);printf("%ldn",result);yzj();)intyzj()(FILE*IN,*OUT;inti;intilN;longintiOUT;IN=fopen("inll.dat'7,r");If(IN=NULL)printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OT=fopen("outll.dat","w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<4;i+)(fscanf(IN'%d",8ilN);iOUT=fun(ilN);fprintf(OUTz"%ldn"ziOUT);)fclose(IN);fclose(OUT);return0;)答案:inti;longs=0;for(i=l;i<=n;i+)s=s+i;returns;第9题(IO.0分)【程序设计】功能:判断一个整数W的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。*/#include"stdio.h"#include"conio.h"intfun(intw)(/*Program*/*)voidmain()(intm;printf("Enterm:");scanf("%d",&m);printf("nTheresultis%dn",fun(m);yzj();getch();)yzj()(FILE*INOUT;intc;intt;into;IN=fopen("in.dat'7,r");If(IN=NULL)(printf("ReadFileError");)OUT=fopen("out.dat","w");If(OUT=NULL)(printf("WriteFileError");for(c=l;c<=5;c+)(fscanf(IN/'%d",&t);o=fun(t);fprintf(OUT,%dn"zo);)fclose(IN);fclose(OUT);)答案:intk,s=O;dos=s+(w%10)*(w%10);w=w10;while(w!=0);if(s%5=0)k=l;elsek=0;return(k);第10题(Io.0分)/*【程序设计】功能:求一个四位数的各位数字的立方和*/#include"stdio.h"intfun(intn)*Program*/*End*/voidmain(void)intk;k=fun(1234);printf("k=%dn',);yzj();)yzj()FILE*INOUT;intilN,iOT;IN=fopen("22.in',"r");if(IN=NLL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OT=fopen("22.out'7'w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");for(i=0;i<10;i+)(fscanf(IN,"%d",8cilN);iOUT=fun(ilN);fprintf(OU,%dn,JOUT);)fclose(IN);fclose(OUT);)答案:intd,k,s=O;while(n>0)d=n%10;s+=d*d*d;n=10;returns;第11题(IO.0分)【程序设计】功能:从低位开始取出长整型变量S奇数位上的数,依次构成一个新数放在t中。例如:当S中的数为:7654321时,t中的数为:7531。*/#include"stdio.h"longfun(longs,longt)*Program4c*/*End*/)returnt;)voidmain()(longs,t,m;crscr();printf(",nPleaseenters:");scanf("%ld"z&s);m=fun(s,t);printf("Theresultis:%ldn",m);getch();yzj();)yzj()(FILE*IN,*OUT;intn;longi,tzm;IN=fopen("in.dat"z"r");if(IN=NLL)(printf("ReadFileError");)OUT=fopen(',out.dat","w");if(OUT=NLL)(printf("WriteFileError");for(n=0;n<5;n+)(fscanf(IN,"%ld"i);m=fun(i);fprintf(OU'C"%ldn",m);)fclose(IN);fclose(OUT);)答案:longsl=10;t=s%10;while(s>0)s=s/100;t=s%10*sl+1;si=si*10;第12题(IO.0分)/*【程序设计】功能:注意:例如:计算并输出给定整数n的所有因子之和(不包括1与自身)。n的值不大于100Oon的值为855时,应输出704。include"stdio.h"intfun(intn)*Prograr*/*End*/)voidmain()printf("s=%dn,zfun(855);yzj();getch();yzj()FILE*IN,*OUT;intilN,iOTi;IN=fopen("in.dat,r");If(IN=NULL)(printf("PleaseVerifyTheCurrerntDir.ltMayBeChanged");)OUT=fopen("out.dat","w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<5;i+)(fscanf(IN'%d"z8ilN);iOUT=fun(ilN);fprintf(OT"%dn"JOUT);)fclose(IN);fclose(OUT);答案:ints=O,i;for(i=2;i<n;i+)if(n%i=0)s=s+i;returns;第13题(10.0分)【程序设计】功能:求一个给定字符串中的英文字母的个数。#include"stdio.h"intfun(chars)*Program4c*/*End*/)voidmain(void)(charstr="Bestwishesforyou!"intk;k=fun(str);printf("k=%dn");yzj();getch();)yzj()(FILE*IN,*OUT;charslN80;intiOUTi;IN=fopen("in.dat"z"r");If(IN=NULL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OUT=fopen("out.dat","w");If(OUT=NULL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<3;i+)fscanf(IN%s",slN);iOUT=fun(slN);fprintf(OUT'%dn"JOUT);fclose(IN);fclose(OUT);)答案:inti,k=0;for(i=0;si!='0'i+)if(si>='a,aasi<='z,si>=,A,aasi<="Z')k+;returnk;第14题(IO.0分)/*【程序设计】功能:能计算从1开始到n的自然数的和,n由键盘输入,并在main()函数中输出。*/#include"stdio.h"intfun(intn)(/*Program*/*End*/)voidmain()intm;printf(,Enterm:");scanf("%d",&m);printf("nTheresultis%dn",fun(m);yzj();getch();)yzj()(FILE*INOUT;intt;into;intc;IN=fopen("in.dat'7,r");If(IN=NULL)(printf("ReadFileError");)OUT=fopen("out.dat"z"w");If(OUT=NULL)(printf("WriteFileError");)for(c=l;c<=5;c+)(fscanf(IN/'%d",&t);o=fun(t);fprintf(OUT'%dn,o);fclose(IN);fclose(OUT);)答案:intsumzi;sum=0;for(i=l;i<=n;i+)sum=sum+i;)return(sum);第15题(IO.0分)【程序设计】功能:请编一个函数voidfun(intttMNJntppN),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入PP所指一维数组中。二维数组中的数己在主函数中赋予。*/include<conio.h>include<stdio.h>#defineM3ftdefineN4voidfun(intttMNJntppN)(/*Program*/*End*/)voidmain()(inttMN=22z45,56,30,19,33,45,38,20,22,66,40;intpN,i,j,k;crscr();printf("Theoriginaldatais:n");for(i=0;i<M;i+)(for(j=0;j<N;j+)printf("%6d"ztij);printf("n");)fun(t,p);printf("nTheresultis:n");for(k=0;k<N;k+)printf("%4d",pk);printf("n");getch();NONO();)NONO()(inti,j,array34,p4;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat",w");for(i=0;i<3;i+)for(j=0;j<4;j+)fscanf(rf,"%d",&arrayij);fun(array,p);for(j=0;j<4;j+)(fprintf(wfz"%7d",pj);fprintf(wfz,(");)fclose(rf);fclose(wf);)答案:intij;for(j=0;j<N;j+)(ppj=ttOj;for(i=l;i<M;i+)if(ttij>ppj)PPj=ttiU;)第16题(IO.0分)【程序设计】功能:求一组数中大于平均值的数的个数。例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。*/#include"stdio.h"intfun(inta,intn)*Program*/*End*/)voidmain(void)(inta10=l,3,6,9,4,23,35,67,12,88;inty;y=fun(azl);printf(,y=%dn,y);yzj();getch();)yzj()(FILE*INOUT;intilN10JOTij;IN=fopen("in.dat"z"r");if(IN=NLL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");)OUT=fopen(',out.dat","w");if(OUT=NLL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");for(i=0;i<10;i+)fscanf(INz"%d"ilNi);iOUT=fun(ilN40);fprintf(O"%dn"JOUT);fclose(IN);fclose(OUT);)答案:inti,k=O;floats=O,ave;for(i=0;i<n;i+)s+=ai;ave=sn;printf("%f,ave);for(i=0;i<n;i+)if(ai>ave)k+;returnk;第17题(Io.0分)/*【程序设计】功能:求大于Iim(Iim小于100的整数)并且小于100的所有素数并放在aa数组中,该函数返回所求出素数的个数。include<stdio.h>include<conio.h>ftdefineMAX100intfun(intIimJntaaMAX)*Program4c*/*End*/)voidmain()intlimitjzsum;intaaMAX;crscr();printf(,PleaseInputalnteger:");scanf("%d"imit);sum=fun(limit,aa);for(i=0;i<sum;i+)if(i%10=0&&i!=0)printf(,n");printf(,%5d"zaai);)NONO();getch();)NONO()(inti,j,array100,sumJim;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat"z"w");for(j=0;j<=5;j+)(fscanf(r"%d'&lim);sum=fun(lim,array);for(i=0;i<sum;i+)fprintf(wfz"%7d",arrayi);fprintf(wf,"");fclose(rf);fclose(wf);)答案:intn=0;intij;for(i=lim;i<=100;i+)for(j=2;j<i;j+)if(i%j=O)break;if(j=i)aan+=i;)returnn;第18题(Io.0分)*【程序设计】功能:将字符串中的大写字母转换为对应的小写字母,其它字符不变。#include"stdio.h"voidchange(charstr)*Prnr3rn*End*#include"string.hmain()voidchange();charstr40;gets(str);change(str);puts(str);yzj();getch();yzj()FILE*IN,*OUT;intn;inti200;into200;IN=fopen("in.dat"z"r");If(IN=NULL)(printf("ReadFileError");)OUT=fopen("out.dat",",w");If(OUT=NULL)printf("WriteFileError");)fscanf(IN,"%s"J);change(i);fprintf(OUT"%s,J);fclose(IN);fclose(OUT);答案:inti;for(i=0;stril='0'i+)if(stri>=,A,&&stri<=,Z')stri=stri+32;第19题(IO.0分)【程序设计】功能:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。例如:7是素数,8不是素数。请编写fun函数。素数是仅能被1和自身整除的数/#include"stdio.h"voidmain()(intmzflag;printf("inputaninteger:");scanf("%d',m);flag=fun(m);if(fag)printf("%disaprime.n",m);elseprintf("%disnotaPrime.n",m);yzj();intfun(intn)*Program*End*yzj()(FILE*IN,*OUT;intilN,iOUN;IN=fopen("5.in","r");if(IN=NLL)(printf("PleaseVerifyTheCurrerntDir.ItMayBeChanged");OT=fopen("5.out,7'w");If(OUT=NULL)(printf("PleaseVerifyTheCurrentDir.ItMayBeChanged");)for(i=0;i<10;i+)(fscanf(IN'%d",8tilN);iOT=fun(ilN);fprintf(OT"%dn"JOUT);)fclose(IN);fclose(OUT);)答案:inti;intj;j=1;for(i=2;i<n;i+)if(n%i=O)j=O;)returnj;第20题(IO.0分)/*【程序设计】功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为:turbocandborlandc+从键盘上输入字符:n,则输出后变为:turbocadborladc+,如果输入的字符在字符串中不存在,则字符串照原样输出。*/#include"stdio.h"intfun(chars,intc)*Program4c*/*End*/)voidmain()staticcharstr="turbocandborlandc+;charch;crscr();Printfr原始字符串:sn,str);Printf(U输入一个字符:");scanf("%c"zch);fun(stch);printf("str=%sn"zstr);getch();yzj();)yzj()FILE*IN,*OUT;chari200;charo200;IN=fopen("in.dat"z"r");if(IN=NLL)(printf("ReadFileError");)OUT=fopen(',out.dat","w");if(OUT=NLL)(printf("WriteFileError");fscanf(INz"%s",i);fun(i,n,);fprintf(OUT"%s",i);fclose(IN);fclose(OUT);)答案:c