C++函数编程20道习题汇总含其详细程序解答.docx
《C++函数编程20道习题汇总含其详细程序解答.docx》由会员分享,可在线阅读,更多相关《C++函数编程20道习题汇总含其详细程序解答.docx(15页珍藏版)》请在冰豆网上搜索。
![C++函数编程20道习题汇总含其详细程序解答.docx](https://file1.bdocx.com/fileroot1/2022-11/24/2f25e7ad-3b52-43ed-a0ec-bd0261e2ad8d/2f25e7ad-3b52-43ed-a0ec-bd0261e2ad8d1.gif)
C++函数编程20道习题汇总含其详细程序解答
第1题:
编写两个函数,函数功能分别是:
求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入:
1525
样例输出:
575
编写函数factors(num,k),函数功能是:
求整数num中包含因子k的个数,如
果没有该因子则返回0,例如:
32=2X2X2X2X2,则factors(32.2)=5o要求输入输出均在主函数中完成。
编写函数,函数功能是:
计算n的阶乘,要求输入输出均在主函数中完成。
编写函数,函数功能是:
计算k以(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。
要求输入输出均在主函数中完成。
样例输入:
500样例输出:
4622
#include
s+=n;}
intsum(intk)
if(c>=10)
{intn,c=O,s=O;
break;}
for(n=k:
n>0;n-)
returns:
}
{if(n%13=0lln%17==0)
intmain()
{c卄;
{intk,s;
cin»k;s=sum(k);cout«s«endl:
return0:
}
第5题:
编写函数,函数功能是:
根据下列公式求Ti的值(直到某一项的值小于给定精度£为止),精度£由键盘输入,要求输入输出均在主函数中完成。
1+2+2启+丄是启+4乙2二+...
3353573579
样例输入:
0.0005样例输出:
3.14058#includedoublepai(doublee){doublesak,p;
s=l;
a=1/3.0;
for(k=2;;k++)
第6题:
编写程序求
{s+=a;a=a*(k/(k*2+l));if(areturnp;}intniain()
{doublec.p;cin»e;p=pai(e);cout«p«endl;return0:
}
要求使用函数,函数功能是:
求某个数的阶乘。
n由键盘输入,输入输出均在主函数中完成。
注意:
0!
=1o
要求使用函数计算该序列的前N项和Sn,直到Sn大于§为止,g由键盘输入,输
入揄出均在主函数中完成。
样例输入:
50
样例输出:
50.4167、
#include
s+=a:
}
cin»q;
floatsum(floatq)
returns;}
s=sum(q);
{floats=0.a,n;
intmain()
cout«s«endl;
for(n=l;s<=q;n++)
{
return0;}
{a=(n+1.0)/n;
floatq,s;
第8题:
求数列的前n项和
5=1+丄+一?
一十……+!
1十21+2十31+2+3+……
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输
入揄出均在主函数中完成。
样例输入:
50
样例输岀:
1.96079
#include
a=1.0/s;
for(i=l;i<=n;i++)
floatmyx(intn)
returna;}
s+=myx(i);
{floata;
intmain()
cout«s«endl;
inti,s=0;
{intn.i;
return0;}
for(i=l;i<=n;i++)
floats=0;
s+=i;
cin»n;
第9题:
编写函数fun(num),其中num是一个n位数,函数功能是:
求整数num的后nT位,如果mo是一位数则返回0,要求输入输出均在主函数中完成。
样例输入:
1000样例输岀:
0样例输入:
10101样例输出:
101
第10题:
编写函数,函数功能是:
判断输入的字符是否为数字字符。
如果是,则输出YES,否则输出NO,要求输入输出均在主函数中完成。
样例输入:
5
样例输岀:
YES
样例输入:
B
样例输出:
NO
第11题:
编写函数,函数功能是:
将两个两位数的正整数a、b合并成一个整数C,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。
a、b由键盘输入,输入输出均在主函数中完成。
样例输入:
4512
第14题:
求满足的n的最大值,要求使用函数,函数功能是:
计算n的立方,k由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
10000
勿_1十05"05(0・5—十—
2!
3!
w!
直到相邻两项之差的绝对值小于1E-6为止。
要求使用函数,函数功能是:
计算数列的每一项,x由键盘输入。
累加过程和输入输出均在主函数中完成。
直到某一项的绝对值小于0.00001为止。
要求使用函数,函数功能是:
计算数列
的每一项,X由键盘输入。
累加过程和输入输出均在主函数中完成。
第17题:
利用级数展开式计算sinx
直到某一项的绝对值小于0.00001为止。
要求使用函数,函数功能是:
计算数列
的每一项,X由键盘输入。
累加过稈和揄入输出均存主函数中完成。
样例输入:
0
样例输岀:
0
样例输入:
3
样例输岀:
0.14112
#include
c=c*i:
for(i=l;;i++)
#include
d=l/c;
{p=an(x4);
doublean(doublex.doublen)
f=a*b*d;
s=s+p;
{doublef,a,b.i,c=l・d;
returnf;}
if(fabs(p)<0.00001)
a=pow(-hn+l);
intmain()
break;}
b=pow(x,2*n-l);
{doublex,s=0,i,p;
cout«s«endl;
for(i=1:
i<=(2*n-l);i++)
cin»x;
return0:
}
第18题:
编写程序求Fibonacci数列的前n项阶乘之和,即。
要求使用函数,函数功能是:
求某个数的阶乘。
n由键盘输入,输入输出均在主函数中完成。
注意:
样例输入:
6样例输出:
40450
第19题:
求数列其中分母为n以(包括n)的素数。
要求使用函数,函数功能是:
计算数列的每一项,n由键盘输入。
累加过程和输入输出均在主函数中完成。
样例输入:
50
样例输出:
1.66165
#include
inti;
if(a==l)
#include
a=0;
d=1.0/n;
floatan(intn)
for(i=l;ielsed=0;
{
if(n%i==0)
returnd;
floata.b=0,c.d;
a++;
}
intmain(){
for(i=l;i<=n;i++)
{
cout«s«endl;return0;
floats=0,n,a;
a=an(i);
}
inti;
s+=a;
cin»n;
}
第20题:
编写程序求m和n之间(包括m和mm<=n)所有素数的平方根之和。
要求使用
函数,函数功能是:
判断某一个数是否为素数。
m和n
由键盘输入,要求输入输
出均存主函数中完成°
样例输入:
100999
样例输出:
3157.48
#include
if(m==2)
{b=pd(k);
#include
flag=l;
if(b)
intpd(intn)
return(flag);}
s=s+sqrt(k);}
{inti.m=0,flag=0;
intmain()
cout«s«endl;
for(i=l;i<=n;i++)
{doublem,n,s=0bk;
return0;}
if(n%i==O)
cin»m»n;
m++;
for(k=m:
k<=n:
k++)
第21题:
样例输入:
46473样例输出:
4样例输入:
235237
样例输出:
0
#include
s=0;
{intnun\k.t;
#include
else
cin»num»k;
intdigit(intx,intk)
{a=x/int(pow(lO.n-k));
t=digit(num,k);
{intnsa.b;
b=a%10;}
cout«t«endl;
n=int(loglO(x))+l;
returnb;}
return0:
}
if(nintmain()
编写函数digit(numrk),函数功能是:
求整数num从左边开始的第k位数字的值,如果num位数不足k位则返回0。
要求输入输出均在主函数中完成。
第1题:
编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。
在主函数中调用该函数,完成任意字符串的转换,并输出结果。
输入字符串(允许包含空格),输出处理后的结果。
样例输入:
HowArcYou?
a[i]=a[i]+32;
int1;
elseif(a[i]>=,a,&&a[i]v=h)
gets(a);
a[i]=a[i]-32;
l=strlen(a);
else
exc(aj);
a[i]=a[i];}}
puts(a);
intmain()
return0:
}
{chara[50];
样例输出:
hOWaREyOU?
#includeusingnamespacestd;
#includevoidexc(charaf]Jnt1){inti;
for(i=0;i{if(a[i]>=Af&&a[i]v=Z)
第2题:
编写函数,形成n阶辉三角形。
在主函数中调用该函数,形成辉三角形,并输出
结果。
输入阶数m输出处理后的结果。
样例输入:
5
样例输出:
1
11
121
1331
14641
#include
for(i=2:
ifor(j=0;j#include
{for(j=l;j
{for(i=0;i<=j;i++)
voidyh(inta[][50],int1)
a[i]U]=a[i-l][j-l]+a[i-l]U];}}
cout«a[j][i]«H
{inti,j,k;
intmain()
cout«endl;}
for(k=0;k{inta[50][50],n,ij;
return0;}
{a[k][O]=l;
cin»n;
a[k][k]=l;}
vh(a.n);
第3题:
编写函数,求一个字符串的长度。
在主函数中调用该函数,输出结果。
输入字符串(允许包含空格),输出字符串的长度。
样例输入:
HowAreYou?
编写函数,将字符数组s2中的前n个字符复制到字符数组s1中,不允许使用
strcpy函数。
在主函数中调用该函数,完成任意字符串的复制,并输出结果。
输入分2行,第一行为字符串(不包含空格),第二行为n的值,输出处理后的纟吉果。
样例输入:
Hello,world!
8
样例输岀:
HcIIoavo
#include
voidcp(chara[]xharb[],intn){inti;
for(i=0;ib[i]=a[i];
第5题:
编写函数,函数功能是:
统计整数n的各位上出现数字1、2、3的次数。
要求输入输出均在主函数中完成。
样例输入:
123114350
样例输出:
312
#include
b[0]++;
intb[50],l;
usingnamespacestd;
elseif(a[i]==,2,)
gets(a);
#include
b[l]++;
I=strlen(a);
voidcs(chara[]9intb[]jnt1)
elseif(a[i]=3)
cs(a,b,l);
{inti;
b[2]++;
cout«b[0]«HM«b|1]«H
b[0]=0;b[l]=0;b[2]=0;
elsecontinue;}}
M«b[2]«endl;
for(i=0;i
intmain()
return0:
}
{if(a[i]=T)
{chara[50];
第6题:
编写程序完成进制转换,要求使用函数,函数功能是:
十进制转换为二进制,$
入揄出均在主函数中完成。
样例输入:
125
样例输出:
1111101
#include
a[i]=x%2;
cin»m;
intzh(inta[]jntx)
x=x/2;}
n=zh(a,m);
{inti=-l;
returni;}
for(k=n;k>=0;k-)
while(x!
=0)
intmain()
(cout«a[k];}
{i卄;
{inta[32],m,n,k;
return0;}
第7题:
第8题:
编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。
例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到
3、4、5、仁2,总和为15。
程序中用到的主函数为:
intmain()
<
inta[50],n,i,sum;cin»n;
for(i=0;isum=f:
un(a9n);
For(i=8;imin=i;cin»n;
第9题:
编写子函数fum功能是挑出字符串中ASCII码值为偶数的大写字母并存放在原字符串中。
例如字符串str为HaB0bD1c\其中满足条件的字符为'B,和因此调用fun函数后,字符串str变为HBD\程序中用到的主函数为:
n=strlen(a);
a[i]=b[i];
for(i=0:
iif(a[i]>=A,&&a[i]<=,Z,&&a
}
#include
[i]%2=0)
intmain()
#include
{
{
#include
chara[100];
voidzf(chara[|)
b[j]=a[i];
gets(a);
{
j++;
zf(a);
charb[50];
}
puts(a);
intij=O,n;
for(i=0;ireturn0;}
第10题:
编写程序完成进制转换,要求使用函数,函数功能是:
十进制转换为八进制,输入输出均在主函数中完成。
样例输入:
125
样例输出:
175
#include
#include
intzh(intb[]Jntn)
i卄;n=n/8;
}b[i]=AO';returni;
intmain()
{
intb[100|;intn,a,i;cin»n;
a=zh(b.n);for(i=a-l;i>=0:
i-)cout«b[i];
return0:
}