C++函数编程20道习题汇总含其详细程序解答DOC.docx
《C++函数编程20道习题汇总含其详细程序解答DOC.docx》由会员分享,可在线阅读,更多相关《C++函数编程20道习题汇总含其详细程序解答DOC.docx(9页珍藏版)》请在冰豆网上搜索。
C++函数编程20道习题汇总含其详细程序解答DOC
第1题:
编写两个函数,函数功能分别是:
求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入:
1525样例输出:
575
#includeintgys(inta,intb){inti;for(i=a;i>0;i--)if(a%i==0&&b%i==0){returni;break;}}intgbs(inta,intb){inti;for(i=a;;i++)if(i%a==0&&i%b==0){returni;break;}}intmain(){inta,b,c,d;cin>>a>>b;c=gys(a,b);d=gbs(a,b);cout<第2题:
编写函数factors(num,k),函数功能是:
求整数num中包含因子k的个数,如果没有该因子则返回0,例如:
32=2×2×2×2×2,则factors(32,2)=5。
要求输入输出均在主函数中完成。
样例输入:
4 2样例输出:
2样例输入:
8 3样例输出:
0
#includeintfactors(intnum,intk){intn=0,a;a=num%k;while(a==0){n++;num=num/k;a=num%k;}returnn;}intmain(){intnum,k,b;cin>>num>>k;b=factors(num,k);cout<第3题:
编写函数,函数功能是:
计算n的阶乘,要求输入输出均在主函数中完成。
样例输入:
5样例输出:
120、
#includeintjc(intn){inta,b=1;for(a=1;a<=n;a++)b=a*b;returnb;}intmain(){intn,s;cin>>n;s=jc(n);cout<第4题:
编写函数,函数功能是:
计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。
要求输入输出均在主函数中完成。
样例输入:
500样例输出:
4622
#includeintsum(intk){intn,c=0,s=0;for(n=k;n>0;n--){if(n%13==0||n%17==0){c++;s+=n;}if(c>=10)break;}returns;}intmain(){intk,s;cin>>k;s=sum(k);cout<第5题:
编写函数,函数功能是:
根据下列公式求π的值(直到某一项的值小于给定精度e为止),精度e由键盘输入,要求输入输出均在主函数中完成。
样例输入:
0.0005样例输出:
3.14058
#includedoublepai(doublee){doubles,a,k,p;s=1;a=1/3.0;for(k=2;;k++){s+=a;a=a*(k/(k*2+1));if(a>e;p=pai(e);cout<第6题:
编写程序求
要求使用函数,函数功能是:
求某个数的阶乘。
n由键盘输入,输入输出均在主函数中完成。
注意:
0!
=1。
样例输入:
3样例输出:
10
#includeintjc(inta){ints=1,i;if(a==0)s=1;else{for(i=1;i<=a;i++)s=s*i;}returns;}intmain(){intn,k,s;doublesum=0;cin>>n;for(k=0;k<=n;k++){s=jc(k);sum+=s;}cout<第7题:
求数列
要求使用函数计算该序列的前N项和SN,直到SN大于q为止,q由键盘输入,输入输出均在主函数中完成。
样例输入:
50样例输出:
50.4167、
#includefloatsum(floatq){floats=0,a,n;for(n=1;s<=q;n++){a=(n+1.0)/n;s+=a;}returns;}intmain(){floatq,s;cin>>q;s=sum(q);cout<第8题:
求数列的前n项和
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
50样例输出:
1.96079
#includefloatmyx(intn){floata;inti,s=0;for(i=1;i<=n;i++)s+=i;a=1.0/s;returna;}intmain(){intn,i;floats=0;cin>>n;for(i=1;i<=n;i++)s+=myx(i);cout<第9题:
编写函数fun(num),其中num是一个n位数,函数功能是:
求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。
样例输入:
9样例输出:
0样例输入:
6734样例输出:
734
样例输入:
1000样例输出:
0样例输入:
10101样例输出:
101
#include#includeintjw(intx){inta,n,m;if(x<10)a=0;else{n=int(log10(x))+1;m=x%int(pow(10,n-1));a=m;}returna;}intmain(){intx,c;cin>>x;c=jw(x);cout<第10题:
编写函数,函数功能是:
判断输入的字符是否为数字字符。
如果是,则输出YES,否则输出NO,要求输入输出均在主函数中完成。
样例输入:
5样例输出:
YES样例输入:
B样例输出:
NO
#includeusingnamespacestd;intpdsz(charn){intflag;if(n>='0'&&n<='9')flag=1;elseflag=0;returnflag;}intmain(){charn;n=getchar();if(pdsz(n)==1)cout<<"yes";elsecout<<"no";return0;}
第11题:
编写函数,函数功能是:
将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。
a、b由键盘输入,输入输出均在主函数中完成。
样例输入:
4512样例输出:
4125
#include#includeinthb(inta,intb){intq,g,m,c;q=a/10;g=a%10;m=b*10;c=q*1000+m+g;returnc;}intmain(){inta,b,c;cin>>a>>b;c=hb(a,b);cout<return0;}第12题:
求数列的前n项和
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
10样例输出:
0.382179
#include#includedoubledx(doublen){doublea,b,c;a=pow(-1,n+1);b=n*(n+1);c=a/b;returnc;}intmain(){doublen,s=0,i,a;cin>>n;for(i=1;i<=n;i++){a=dx(i);s+=a;}cout<第13题:
求数列的前n项和
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
3样例输出:
123
#include#includeintan(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<第14题:
求满足
的n的最大值,要求使用函数,函数功能是:
计算n的立方,k由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
10000样例输出:
13
#include#includeintlf(intx){inta;a=x*x*x;returna;}intmain(){intk,s=0,i,n=0,a;cin>>k;for(i=1;s第15题:
求数列
直到相邻两项之差的绝对值小于1E-6为止。
要求使用函数,函数功能是:
计算数列的每一项,x由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
0.21样例输出:
1.1
#include#includefloatsn(floatx,floatn){floats=1,i,a=1,b=1,m;for(i=1;i<=n;i++){a=a*(0.5-(i-1));b=b*i;m=1/b;s+=a*m*pow(x,i);}returns;}intmain(){floatx,k,n=0,p,q;cin>>x;for(k=1;;k++){n++;p=sn(x,n);q=sn(x,n+1);if(fabs(q-p)<1E-6)break;}cout<第16题:
利用级数展开式计算cosx
直到某一项的绝对值小于0.00001为止。
要求使用函数,函数功能是:
计算数列的每一项,x由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
0样例输出:
1样例输入:
3样例输出:
-0.989992
#include#includedoublean(doublex,doublen){doublea,b,k,c=1,d,e;a=pow(-1,n);b=pow(x,2*n);for(k=1;k<=2*n;k++)c*=k;d=1/c;e=a*b*d;returne;}intmain(){doublex,s=1,i,p;cin>>x;for(i=1;;i++){p=an(x,i);s+=p;if(fabs(p)<0.00001)break;}cout<第17题:
利用级数展开式计算sinx
直到某一项的绝对值小于0.00001为止。
要求使用函数,函数功能是:
计算数列的每一项,x由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
0样例输出:
0样例输入:
3样例输出:
0.14112
#include#includedoublean(doublex,doublen){doublef,a,b,i,c=1,d;a=pow(-1,n+1);b=pow(x,2*n-1);for(i=1;i<=(2*n-1);i++)c=c*i;d=1/c;f=a*b*d;returnf;}intmain(){doublex,s=0,i,p;cin>>x;for(i=1;;i++){p=an(x,i);s=s+p;if(fabs(p)<0.00001)break;}cout<第18题:
编写程序求Fibonacci数列的前n项阶乘之和,即
。
要求使用函数,函数功能是:
求某个数的阶乘。
n由键盘输入,输入输出均在主函数中完成。
注意:
#include#includeintjc(intx){inta=1,k;for(k=1;k<=x;k++)a*=k;returna;}intmain(){intn,i,a,b,s,j,k;cin>>n;a=1;b=1;s=2;for(i=3;i<=n;i++){j=a+b;k=jc(j);s+=k;a=b;b=j;}cout<样例输入:
6样例输出:
40450
第19题:
求数列
其中分母为n以内(包括n)的素数。
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
50样例输出:
1.66165
#include#includefloatan(intn){floata,b=0,c,d;inti;a=0;for(i=1;i>n;for(i=1;i<=n;i++){a=an(i);s+=a;}cout<第20题:
编写程序求m和n之间(包括m和n,m<=n)所有素数的平方根之和。
要求使用函数,函数功能是:
判断某一个数是否为素数。
m和n由键盘输入,要求输入输出均在主函数中完成。
样例输入:
100999 样例输出:
3157.48
#include#includeintpd(intn){inti,m=0,flag=0;for(i=1;i<=n;i++)if(n%i==0)m++;if(m==2)flag=1;return(flag);}intmain(){doublem,n,s=0,b,k;cin>>m>>n;for(k=m;k<=n;k++){b=pd(k);if(b)s=s+sqrt(k);}cout<第21题:
编写函数digit(num,k),函数功能是:
求整数num从左边开始的第k位数字的值,如果num位数不足k位则返回0。
要求输入输出均在主函数中完成。
样例输入:
46473样例输出:
4样例输入:
235237样例输出:
0
#include#includeintdigit(intx,intk){intn,s,a,b;n=int(log10(x))+1;if(n>num>>k;t=digit(num,k);cout<第1题:
编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。
在主函数中调用该函数,完成任意字符串的转换,并输出结果。
输入字符串(允许包含空格),输出处理后的结果。
样例输入:
HowAreYou?
样例输出:
hOWaREyOU?
#includeusingnamespacestd;#includevoidexc(chara[],intl){inti;for(i=0;i='A'&&a[i]<='Z')a[i]=a[i]+32;elseif(a[i]>='a'&&a[i]<='z')a[i]=a[i]-32;elsea[i]=a[i];}}intmain(){chara[50];intl;gets(a);l=strlen(a);exc(a,l);puts(a);return0;}
第2题:
编写函数,形成n阶杨辉三角形。
在主函数中调用该函数,形成杨辉三角形,并输出结果。
输入阶数n,输出处理后的结果。
样例输入:
5样例输出:
111121133114641
#include#includevoidyh(inta[][50],intl){inti,j,k;for(k=0;k>n;yh(a,n);for(j=0;j第3题:
编写函数,求一个字符串的长度。
在主函数中调用该函数,输出结果。
输入字符串(允许包含空格),输出字符串的长度。
样例输入:
HowAreYou?
样例输出:
12
#includeusingnamespacestd;#includeintlen(chara[]){intl;l=strlen(a);returnl;}intmain(){chara[50];intl;gets(a);l=len(a);cout<第4题:
编写函数,将字符数组s2中的前n个字符复制到字符数组s1中,不允许使用strcpy函数。
在主函数中调用该函数,完成任意字符串的复制,并输出结果。
输入分2行,第一行为字符串(不包含空格),第二行为n的值,输出处理后的结果。
样例输入:
Hello,world!
8样例输出:
Hello,wo
#includevoidcp(chara[],charb[],intn){inti;for(i=0;i>a>>n;cp(a,b,n);cout<第5题:
编写函数,函数功能是:
统计整数n的各位上出现数字1、2、3的次数。
要求输入输出均在主函数中完成。
样例输出:
312
#includeusingnamespacestd;#includevoidcs(chara[],intb[],intl){inti;b[0]=0;b[1]=0;b[2]=0;for(i=0;i第6题:
编写程序完成进制转换,要求使用函数,函数功能是:
十进制转换为二进制,输入输出均在主函数中完成。
样例输入:
125样例输出:
1111101
#includeintzh(inta[],intx){inti=-1;while(x!
=0){i++;a[i]=x%2;x=x/2;}returni;}intmain(){inta[32],m,n,k;cin>>m;n=zh(a,m);for(k=n;k>=0;k--){cout<第7题:
编写两个函数,将n个正整数中的素数按升序排序。
函数功能分别是:
判断一个数是否为素数,以及对数组进行排序。
输入分2行:
第一行为n的值,第二行为n个整数。
要求输入输出均在主函数中完成。
样例输入:
9987654321样例输出:
2357
#includeintorder(inta[],intb[],intl){inti,m,j,k=0,q,w;for(i=0;ib[j])q=j;if(q!
=i){w=b[q];b[q]=b[i],b[i]=w;}}returnk;}intmain(){inta[40],b[40],n,l,q;cin>>n;for(l=0;l>a[l];q=order(a,b,n);for(l=0;lreturn0;}
第8题:
编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。
例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。
程序中用到的主函数为:
#include
intfun(inta[],intl){intmax=0,i,min=0,w,s=0;for(i=1;ia[i])min=i;w=a[max];a[max]=a[min];a[min]=w;for(i=0;i>n;for(i=0;i>a[i];sum=fun(a,n);for(i=0;i第9题:
编写子函数fun,功能是挑出字符串中ASCII码值为偶数的大写字母并存放在原字符串中。
例如字符串str为"aB0bD1c",其中满足条件的字符为'B'和'D',因此调用fun函数后,字符串str变为"BD"。
程序中用到的主函数为:
#include#include#includevoidzf(chara[]){charb[50];inti,j=0,n;n=strlen(a);for(i=0;i='A'&&a[i]<='Z'&&a[i]%2==0){b[j]=a[i];j++;}for(i=0;i第10题:
编写程序完成进制转换,要求使用函数,函数功能是:
十进制转换为八进制,输入输出均在主函数中完成。
样例输入:
125样例输出:
175
#include#includeintzh(intb[],intn){inti=0;while(n>0){b[i]=n%8;i++;n=n/8;}b[i]='\0';returni;}intmain(){intb[100];intn,a,i;cin>>n;a=zh(b,n);for(i=a-1;i>=0;i--)cout<