C语言函数编程20道习题汇总含其详细程序解答.docx
函数作业及解答第1题:编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。样例输入:1525样例输出:575ttinc1ude<iostream.h>intgbs(inta,intb)inta,b,c,d;intgys(inta,intb)inti;cin>>a>>b;(inti;for(i=a;;i+)c=gys(a,b);for(i=a;i>0;i-)if(i%a=0tei%b=0)d=gbs(a,b);if(a%i=0&&b%i=0)returni;cout<<c<<''<<d;returni;break;return0;break;)第2题:intmain()编写函数factors(num,k),函数功能是:求整数num中包含因子k的个数,如果没有该因子则返回Q例如:32=2X2X2X2X2,则factors(32,2)=5。要求输入输出均在主函数中完成。样例输入:42样例输出:2样例输入:83样例输出:0ttinc1ude<iostream.h>num=numk;cin>>num>>k;intfactors(intnum,intk)a=num%k;b=factors(num,k)intn=0,a;cout<<b<<end1;a=num%k;returnn;return0;whi1e(a=0)intmain()n+;intnum,k,b;第3题:编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。样例输入:5样例输出:120、ttinc1ude<iostream,h>returnb;cout<<s;intjc(intn)intmain()return0;inta,b=1;intn,s;)for(a=1;a<=n;a+)cin»n;b=a*b;s=jc(n);第4题:编写函数,函数功能是:计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。要求输入输出均在主函数中完成。样例输入:500样例输出:4622ttinc1ude<iostream,h>s+=n;cin>>k;intsum(intk)if(c>=10)s=sum(k);intn,c=0,s=0;break;cout<<s<<end1;for(n=k;n>0;n-)returns;return0;if(n%13=0n%17=0)intmain()c+;intk,s;第5题:编写函数,函数功能是:根据下列公式求五的值(直到某一项的值小于给定精度e为止),精度e由键盘输入,要求输入输出均在主函数中完成。÷+x2+xax2+xax2x+.23353573579样例输入:0.0005样例输出:3.14058ttinc1ude<iostream.h>doub1epai(doub1ee)doub1es,a,k,p;s=1;a=13.0;for(k=2;;k+)第6题:编写程序求s+=a;a=a*(k(k*2+1);if(a<e)break;p=s*2;returnp;intmain()doub1ee,p;cin>>e;p=pai(e);cout<<p<<end1;return0;£-0要求使用函数,函数功能是:求某个数的阶乘。n由键盘输入,输入输出均在主函数中完成。注意:0!二1。样例输入:3样例输出:10ttinc1ude<iostream,h>for(i=1;i<=a;i+)cin>>n;intjc(inta)s=s*i;for(k=0;k<=n;k+)ints=1,i;returns;s=jc(k);if(a=0)intmain()sum+=s;s=1;intn,k,s;cout<<sum<<end1;e1sedoub1esum=0;return0;第7题:求数列要求使用函数计算该序列的前N项和篇直到孔大于q为止,q由键盘输入,输入输出均在主函数中完成,样例输入:50样例输出:50.4167、ttinc1ude<iostream,h>s+=a;cin>>q;f1oatsum(f1oatq)returns;s=sum(q);f1oats=0,a,n;intmain()cout<<s<<end1;for(n=1;s<=q;n+)(return0;a=(n+1.0)/n;f1oatq,s;第8题:求数列的前n项和1S=IH1+1+21÷2÷31÷2+3+入输出均在主函数中完成。样例输入:50样例输出:1.96079ftinc1ude<iostream,h>a=1.0/s;for(i=1;i<=n;i+)f1oatmyx(intn)returna;s+=myx(i);f1oata;intmain()cout<<s<<end1;inti,s=0;intn,i;return0;)for(i=1;i<=n;i+)f1oats=0;s+=i;cin>>第9题:编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后nT位,如果num是一位数则返回0,要求输入输出均在主函数中完成。样例输入:9样例输出:0样例输入:6734样例输出:734样例输入:1000样例输出:0样例输入:IOIo1样例输出:101ftinc1ude<iostream,h>e1seintx,c;ttinc1ude<math.h>n=int(Iog10(x)+1;cin>>x;intjw(intx)m=x%int(pow(10,n-1);c=jw(x);inta,n,m;a=m;cout<<c<<end1;if(x<10)returna;return0;)a=0;intmain()第10题:编写函数,函数功能是:判断输入的字符是否为数字字符。如果是,则输出YES,否则输出NO,要求输入输出均在主函数中完成。样例输入:5样例输出:YES样例输入:B样例输出:NOttinc1ude<iostream>e1seif(pdsz(n)=1)usingnamespacestd;f1ag=0;cout<<yes;intpdsz(charn)returnf1ag;)e1se(intf1ag;intmain()COUt“no";if(n>='0'Un<=,9')charn;return0;fIag=I;n=getchar();第11题:编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数C,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在C的百位和十位。a、b由键盘输入,输入输出均在主函数中完成。样例输入:4512样例输出:4125ttinc1ude<iostream.h>ttinc1ude<math.h>inthb(inta,intb)intq,g,m,c;q=a10;return0;第12题:求数列的前n项和g=a%10;m=b*10;c=q*1000+m+g;returnc;intmain(),一J_+J12T11×22×33×44×5w(w÷1)要求使用函数,函数功能是:计算数列的每一项入输出均在主函数中完成。inta,b,c;cin>>a>>b;c=hb(a,b);cout<<c<<end1;n由键盘输入。累加过程和输a=dx(i);s+=a;cout<<s<<end1;return0;样例输入:10样例输出:0.382179ftinc1ude<iostream,h>ttinc1ude<math.h>doub1edx(doub1en)doub1ea,b,c;a=pow(-1,n+1);b=n*(n+1);第13题:求数列的前n项和c=ab;returnc;intmain()doub1en,s=0,i,a;cin»n;for(i=1;i<=n;i+)SWW=1÷11+111÷1111+111.1由键盘输入。累加过程和输要求使用函数,函数功能是:计算数列的每一项入输出均在主函数中完成。样例输入:3样例输出:123ttinc1ude<iostream,h>ttinc1ude<math.h>intan(intn)ints=0,m,a,i;for(i=1;i<=n;i+)m=int(pow(10,i-1);a=m;s+=a;returns;intmain()intn,i,a,sum=0;cin»n;for(i=1;i<=n;i+)a=an(i);sum+=a;cout<<sum<<end1;return0;第14题:求满足F+2+3+/左的口的最大值,要求使用函数,函数功能是:计算n的立方,k由键盘输入。累加过程和输入输出均在主函数中完成。a=1f(i);s+=a;n=i-2;cout<<n<<end1return0;样例输入:IOOOO样例输出:13ttinc1ude<iostream.h>ttinc1ude<math.h>intIf(intx)inta;a=x*x*x;第15题:求数列returna;intmain()intk,s=0,i,n=0,a;cin>>k;for(i=1;s<k;i+)Sn=I卜05XO5(O5-1)v,0.5(0.5-1)(O5-2)/+05(051)(052)(0.5+1)工找2!3!n直到相邻两项之差的绝对值小于IE-6为止。要求使用函数,函数功能是:计算数列的每一项,X由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:0.21样例输出:11ttinc1ude<iostream.h>ttinc1ude<math.h>f1oatsn(f1oatx,f1oatn)f1oats=1,i,a=1,b=1,m;for(i=1;i<=n;i+)a=a*(0.5-(i-1);b=b*i;第16题:利用级数展开式计算COSXm=1b;s+=a*m*pow(x,i);)returns;intmain()f1oatx,k,n=O,p,q;cin>>x;for(k=1;k+)n+;p=sn(x,n);q=sn(x,n+1);if(fabs(q-p