c语言程序设计练习题.docx
【程序填空】功能:产生并输出杨辉三角的前七行011I1211331146411510IO51161520156*/#include<stdio.h>main()inta77;intij;for(i=0;i<7;i+)ai0=l;*space*/aiji=l;1for(i=2;i<7;i+)*space*/for(j=l;j<i;j+)*space*/aiU=aMU+aM4;for(i=0;i<7;i+)*space*/for(j=0;j<=i;j+)printf(',%6d'aij);printf(',n,);【程序改错】功能:计算正整数num的各位上的数字之积。例如:输入252,则输出应该是20。*/#include<stdio.h>longfun(longnum)/*F0UND*5jt*/longk=l;dok*=num%10;*FOUND*3tc*/num/=10;(while(num);returnk;main()longn;printf("nPleaseenteranumber:");/*F0UND*5jc*/scanf("%ld,n);*found*/printf("n%ldn,fun(n);*【程序改错】功能:根据整型形参m的值,计算如下公式的值。1I1t=1.2x23x3mxm例如:若m=5,则应输出:0.536389*/#include<stdio.h>doublefun(intm)inti;/*F0UND*5jc*/for(i=2;i<=m;i)*FOUND*3tc*/y-=1.0(i*i);/*F0UND*5jc*/returny;main()(intn=5;printf("ntheresultis%lfn",fun(n);【程序设计】功能:用辗转相除法求两个整数的最大公约数。*/#include<stdio.h>voidwwjt();intgcd(intn,intm)*PrograID*/intr,t;if(n<m)t=n;n=m;m=t;r=n%m;while(r!=O)n=m;m=r;r=n%m;)return(m);/*End*/main()intn,m,result;scanf("%d%d",&n,&m);result=gcd(n,m);printf("thegcdis%dn",result);wwjt();)voidwwjt()(FILE*IN,*OUT;intm,n;inti2;into;IN=fpen(,in.dat',"r);if(IN=NULL)(printf("ReadFILEError'*);)OUT=fopen("out.dat,w);if(OUT=NULL)(printf("WriteFILEErrorn);)for(n=0;n<6;n+)(for(m=0;m<2;m+)(fscanf(IN,"%d"im);1o=gcd(i0,il);fprintf(OUT'%dn",o);)fclose(IN);fclose(OUT);【程序填空】功能:对任一整数N(N=0),它都可以分解成1(或-1)和一些质数(素数)因子的形式。例如:当N=150时,可分解成1X2X3X5X5;当N=-150时,可分解为-1X2X3X5X5。下边程序能实现这种分解过程。当N=150,输出以下分解结果:N=I*2*3*5*5*/#include<stdio.h>#include<stdlib.h>main()intn,i,r;scanf("%d,<fcn);if(n=0)printf("dataerrorn,t);exit(0);*SPACE*/elseif(n>0)printf("n=');elseprintf("n=-');n=-n;*SPACE*/for(i=2;i<=n;i+)*Space*/r=n%i;while(r=0)printf("*%d",i);*space*/n=ni;r=n%i;printf("n'');【程序改错】功能:根据以下公式求口值,并作为函数值返回。例如:给指定精度的变量eps输入0.0005时,应当输出Pi=3.l40578°1121231234=1H+-X+XX+XXX+.23353573579*/#include<stdio.h>doublefun(doubleeps)doubles,t;intn=l;s=0.0;t=l;/*F0UND*3ic*/while(t>eps)s+=t;*3c*FOUND*/t=*n(2*n+l)*t;n+;*FOUND*3lc*/return2*s;main()doublex;scanf("%lf,(fex);printf("neps=%lf,Pi=%lfnn',x,fin(x);*【程序改错】功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入。例如:若k的值为500,则函数值为4622。*/#include<stdio.h>intfun(intk)intm=0,mc=0;/*found*/while(k>=2)&&(mc<10)*FOUND*5tc*/if(k%13=0)(k%l7=0)m=m+k;me+;*FOUND*/k-;*found*/returnm;main()printf("%dn",fun(500);/*【程序设计】功能:求一个大于10的n位整数的后n-1位的数,并作为函数值返回。*/#include<stdio.h>#include"conio.h"voidwwjt();intfun(intw)/*PrograID*/intn=0;inti=l;while(w>10)n=n+i*(w%IO);w10;i*=10;)returnn;/*End*/main()(intm;printf("Enterm:");scanf("%d'&m);printf("nTheresultis%dn'fun(m);wwjt();)voidwwjt()(FILE*IN,*OUT;intc;intt;into;IN=fopen(,'in.dat,"r,);if(IN=NULL)(printf("ReadFILEError");)OUT=fopen(1,out.dat"',w");if(OUT=NULL)(printf("WriteFILEError");1for(c=l;c<=5;c+)(fscanf(IN,"%d,t);o=fun(t);fprintf(OUT,"%dn',o);)fclose(IN);fclose(OUT);【程序填空】功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。*/#include<stdio.h>main()charstr80,ch;inti,k=0;*space*/gets(str);ch=getchar();*SPACE*/for(i=0;stri!=0;i+)if(stri!=ch)*SpaCEj*c*/strkj=stri;k+;*SPACE*/strk=0;puts(str);/*【程序改错】功能:求1到10的阶乘的和。*/#include<stdio.h>main()inti;floats=0;floatfac(intn);/*F0UND*5jt*/fdr(i=l;i<=10;i+)*FOUND*3lc*/s+=fac(i);printf("%fn",s);floatfac(intn)*FOUND*5*c*/floaty=l;inti;for(i=l;i<=n;i+)y=y*i;*found*/returny;*【程序改错】功能:将若干学生的档案存放在一个文件中,并显示其内容。/#include<stdio.h>structstudent(intnum;charname10;intage;);structstudentstu3=(001,"LiMei',18),(002,"JiHua",19),(003,"SunHao"J8);#include<stdio.h>voidmain()*F0UND*3tc*/structstudent*p;*F0UND*3lc/HLE*fp;inti;if(fp=fopen("stuJist","wb,)=NULL)(printf("cannotopenfilen");return;*found*/for(*p=stu;p<stu+3;p+)(将*p改