《C语言函数编程20道习题汇总含其详细程序解答.docx》由会员分享,可在线阅读,更多相关《C语言函数编程20道习题汇总含其详细程序解答.docx(12页珍藏版)》请在第一文库网上搜索。
1、函数作业及解答第1题:编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。样例输入:1525样例输出:575ttinc1udeintgbs(inta,intb)inta,b,c,d;intgys(inta,intb)inti;cinab;(inti;for(i=a;;i+)c=gys(a,b);for(i=a;i0;i-)if(i%a=0tei%b=0)d=gbs(a,b);if(a%i=0&b%i=0)returni;coutcd;returni;break;return0;break;)第2题:intmain()编写函数factors(num,k
2、),函数功能是:求整数num中包含因子k的个数,如果没有该因子则返回Q例如:32=2X2X2X2X2,则factors(32,2)=5。要求输入输出均在主函数中完成。样例输入:42样例输出:2样例输入:83样例输出:0ttinc1udenum=numk;cinnumk;intfactors(intnum,intk)a=num%k;b=factors(num,k)intn=0,a;coutbend1;a=num%k;returnn;return0;whi1e(a=0)intmain()n+;intnum,k,b;第3题:编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。样例输入:
3、5样例输出:120、ttinc1udereturnb;couts;intjc(intn)intmain()return0;inta,b=1;intn,s;)for(a=1;a=n;a+)cinn;b=a*b;s=jc(n);第4题:编写函数,函数功能是:计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。要求输入输出均在主函数中完成。样例输入:500样例输出:4622ttinc1udes+=n;cink;intsum(intk)if(c=10)s=sum(k);intn,c=0,s=0;break;couts0;n-)returns;return0;if(n
4、%13=0n%17=0)intmain()c+;intk,s;第5题:编写函数,函数功能是:根据下列公式求冗的值(直到某一项的值小于给定精度e为止),精度e由键盘输入,要求输入输出均在主函数中完成。=1+X+XX+XXX+23353573579样例输入:0.0005s+=a;a=a*(k(k*2+1);if(ae;p=pai(e);coutpend1;return0;)样例输出:3.14058ftinc1udedoub1epai(doub1ee)doub1es,a,k,p;s=1;a=13.0;for(k=2;;k+)第6题:编写程序求n妇要求使用函数,函数功能是:求某个数的阶乘。n由键盘输入
5、,输入输出均在主函数中完成。注意:0!=1样例输入:3样例输出:10ttinc1udefor(i=1;i=a;i+)cinn;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;coutsumend1;e1sedoub1esum=0;return0;)第7题:求数列C234N+1n123N要求使用函数计算该序列的前N项和前直到为大于q为止,由键盘输入,输入输出均在主函数中完成,样例输入:50样例输出:50.4167、ttinc1udes+=a;cinq;f1oa
6、tsum(f1oatq)returns;s=sum(q);(f1oats=0,a,n;intmain()coutsend1;for(n=1;s=q;n+)return0;)a=(n+1.0)n;f1oatq,s;第8题:求数列的前n项和S=I+F+12123123要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:50样例输出:1.96079ttinc1udea=1.0/s;for(i=1;i=n;i+)f1oatmyx(intn)returna;s+=myx(i);f1oata;intmain()coutsend1;inti,s=0;int
7、n,i;return0;for(i=1;i=n;i+)f1oats=0;s+=i;cinn;第9题:编写函数fun(num),其中num是一个n位数,函数功能是:求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。样例输入:9样例输出:0样例输入:6734样例输出:734样例输入:1000样例输出:0样例输入:10101样例输出:101ftinc1udee1seintx,c;ttinc1uden=int(Iog1O(x)+1;cinx;intjw(intx)m=x%int(pow(10,n-1);c=jw(x);inta,n,m;a=m;coutcend1;if
8、(x10)a=0;returna;intmain()return0;第10题:编写函数,函数功能是:判断输入的字符是否为数字字符。如果是,则输出YES,否则输出N0,要求输入输出均在主函数中完成。样例输入:5样例输出:YES样例输入:B样例输出:NOttinc1udee1seif(pdsz(n)=1)usingnamespacestd;f1ag=0;COUt“yes;intpdsz(charn)returnf1ag;e1seintf1ag;intmain()COUt“no;if(n=0&n=9)fIag=I;charn;n=getchar();return0;第11题:编写函数,函数功能是:将
9、两个两位数的正整数a、b合并成一个整数C,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。a、由键盘输入,输入输出均在主函数中完成。样例输入:4512样例输出:4125ttinc1udettinc1udeinthb(inta,intb)intq,g,m,c;q=a10;return0;第12题:求数列的前n项和g=a%10;m=b*10;c=q*1000+m+g;returnc;intmain()12233445(T产十十w*(w1)要求使用函数,函数功能是:计算数列的每一项,inta,b,c;cinab;c=hb(a,b);coutcend1;由键盘
10、输入。累加过程和输入输出均在主函数中完成。样例输入:10样例输出:0.382179ftinc1udettinc1udedoub1edx(doub1en)doub1ea,b,c;a=pow(-1,n+1);b=n*(n+1);第13题:求数列的前n项和c=ab;returnc;intmain()doub1en,s=0,i,a;cinn;for(i=1;i=n;i+)Stzw=1111111111+111.1M要求使用函数,函数功能是:计算数列的每一项,a=dx(i);s+=a;coutsend1;return0;由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:3样例输出:123ttin
11、c1udettinc1udeintan(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;cinn;for(i=1;i=n;i+)a=an(i);sum+=a;coutsumend1;return0;求满足F+2+33+/左的口的最大值,要求使用函数,函数功能是:计算n的立方,k由键盘输入。累加过程和输入输出均在主函数中完成。a=1f(i);s+=a;n=i-2;coutnend1return0;样例输入:IOOOO样例输出:13ttinc1udettinc1u
12、deintIf(intx)inta;a=x*x*x;第15题:求数列returna;intmain()intk,s=0,i,n=0,a;cink;for(i=1;sk;i+)=1+O5+015(015-1)2+0.5(0.51X0.5-2)/十叶0.5(0.5FO.5-2)(0.5f+1)-2!3!n直到相邻两项之差的绝对值小于IE-6为止。要求使用函数,函数功能是:计算数列的每一项,X由键盘输入。累加过程和输入输出均在主函数中完成。样例输入:0.21样例输出:11ttinc1udem=1b;n+;ttinc1udes+=a*m*pow(x,i);)p=sn(x,n);f1oatsn(f1oatx,f1oatn)returns;q=sn(x,n+1);f1oats=1,i,a=1,b=1,m;intmain()if(fabs(q-p)1E-6)for(i=1;ix;coutpend1;b=b*i;