C++函数编程20道习题汇总含其详细程序解答.docx
- 文档编号:12913626
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:31
- 大小:66.41KB
C++函数编程20道习题汇总含其详细程序解答.docx
《C++函数编程20道习题汇总含其详细程序解答.docx》由会员分享,可在线阅读,更多相关《C++函数编程20道习题汇总含其详细程序解答.docx(31页珍藏版)》请在冰豆网上搜索。
C++函数编程20道习题汇总含其详细程序解答
第1题:
编写两个函数,函数功能分别是:
求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。
样例输入:
1525
样例输出:
575
#include
intgys(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< return0;} 第2题: 编写函数factors(num,k),函数功能是: 求整数num中包含因子k的个数,如果没有该因子则返回0,例如: 32=2×2×2×2×2,则factors(32,2)=5。 要求输入输出均在主函数中完成。 样例输入: 4 2样例输出: 2样例输入: 8 3样例输出: 0 #include intfactors(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< return0; } 第3题: 编写函数,函数功能是: 计算n的阶乘,要求输入输出均在主函数中完成。 样例输入: 5样例输出: 120、 #include intjc(intn) {inta,b=1; for(a=1;a<=n;a++) b=a*b; returnb;} intmain() {intn,s; cin>>n; s=jc(n); cout< return0; } 第4题: 编写函数,函数功能是: 计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。 要求输入输出均在主函数中完成。 样例输入: 500样例输出: 4622 #include intsum(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< return0; } 第5题: 编写函数,函数功能是: 根据下列公式求π的值(直到某一项的值小于给定精度e为止),精度e由键盘输入,要求输入输出均在主函数中完成。 样例输入: 0.0005 样例输出: 3.14058 #include doublepai(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 p=s*2; returnp;} intmain() {doublee,p; cin>>e; p=pai(e); cout< return0;} 第6题: 编写程序求 要求使用函数,函数功能是: 求某个数的阶乘。 n由键盘输入,输入输出均在主函数中完成。 注意: 0! =1。 样例输入: 3 样例输出: 10 #include intjc(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< return0;} 第7题: 求数列 要求使用函数计算该序列的前N项和SN,直到SN大于q为止,q由键盘输入,输入输出均在主函数中完成。 样例输入: 50 样例输出: 50.4167、 #include floatsum(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< return0;} 第8题: 求数列的前n项和 要求使用函数,函数功能是: 计算数列的每一项,n由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 50 样例输出: 1.96079 #include floatmyx(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< return0;} 第9题: 编写函数fun(num),其中num是一个n位数,函数功能是: 求整数num的后n-1位,如果num是一位数则返回0,要求输入输出均在主函数中完成。 样例输入: 9样例输出: 0样例输入: 6734样例输出: 734 样例输入: 1000样例输出: 0样例输入: 10101样例输出: 101 #include #include intjw(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< return0;} 第10题: 编写函数,函数功能是: 判断输入的字符是否为数字字符。 如果是,则输出YES,否则输出NO,要求输入输出均在主函数中完成。 样例输入: 5 样例输出: YES 样例输入: B 样例输出: NO #include usingnamespacestd; intpdsz(charn) {intflag; if(n>='0'&&n<='9') flag=1; else flag=0; returnflag;} intmain() {charn; n=getchar(); if(pdsz(n)==1) cout<<"yes"; else cout<<"no"; return0;} 第11题: 编写函数,函数功能是: 将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。 a、b由键盘输入,输入输出均在主函数中完成。 样例输入: 4512 样例输出: 4125 #include #include inthb(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 #include doubledx(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< return0;} 第13题: 求数列的前n项和 要求使用函数,函数功能是: 计算数列的每一项,n由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 3 样例输出: 123 #include #include 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< return0;} 第14题: 求满足 的n的最大值,要求使用函数,函数功能是: 计算n的立方,k由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 10000 样例输出: 13 #include #include intlf(intx) {inta; a=x*x*x; returna;} intmain() {intk,s=0,i,n=0,a; cin>>k; for(i=1;s {a=lf(i); s+=a;} n=i-2; cout< return0;} 第15题: 求数列 直到相邻两项之差的绝对值小于1E-6为止。 要求使用函数,函数功能是: 计算数列的每一项,x由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 0.21 样例输出: 1.1 #include #include floatsn(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< return0;} 第16题: 利用级数展开式计算cosx 直到某一项的绝对值小于0.00001为止。 要求使用函数,函数功能是: 计算数列的每一项,x由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 0样例输出: 1样例输入: 3样例输出: -0.989992 #include #include doublean(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< return0;} 第17题: 利用级数展开式计算sinx 直到某一项的绝对值小于0.00001为止。 要求使用函数,函数功能是: 计算数列的每一项,x由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 0 样例输出: 0 样例输入: 3 样例输出: 0.14112 #include #include doublean(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< return0;} 第18题: 编写程序求Fibonacci数列的前n项阶乘之和,即 。 要求使用函数,函数功能是: 求某个数的阶乘。 n由键盘输入,输入输出均在主函数中完成。 注意: #include #include intjc(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< return0;} 样例输入: 6 样例输出: 40450 第19题: 求数列 其中分母为n以内(包括n)的素数。 要求使用函数,函数功能是: 计算数列的每一项,n由键盘输入。 累加过程和输入输出均在主函数中完成。 样例输入: 50 样例输出: 1.66165 #include #include floatan(intn) { floata,b=0,c,d; inti; a=0; for(i=1;i if(n%i==0) a++; if(a==1) d=1.0/n; elsed=0; returnd; } intmain() { floats=0,n,a; inti; cin>>n; for(i=1;i<=n;i++) { a=an(i); s+=a; } cout< return0; } 第20题: 编写程序求m和n之间(包括m和n,m<=n)所有素数的平方根之和。 要求使用函数,函数功能是: 判断某一个数是否为素数。 m和n由键盘输入,要求输入输出均在主函数中完成。 样例输入: 100999 样例输出: 3157.48 #include #include intpd(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< return0;} 第21题: 编写函数digit(num,k),函数功能是: 求整数num从左边开始的第k位数字的值,如果num位数不足k位则返回0。 要求输入输出均在主函数中完成。 样例输入: 46473样例输出: 4样例输入: 235237样例输出: 0 #include #include intdigit(intx,intk) {intn,s,a,b; n=int(log10(x))+1; if(n s=0; else {a=x/int(pow(10,n-k)); b=a%10;} returnb;} intmain() {intnum,k,t; cin>>num>>k; t=digit(num,k); cout< return0;} 第1题: 编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。 在主函数中调用该函数,完成任意字符串的转换,并输出结果。 输入字符串(允许包含空格),输出处理后的结果。 样例输入: HowAreYou? 样例输出: hOWaREyOU? #include usingnamespacestd; #include voidexc(chara[],intl) {inti; for(i=0;i {if(a[i]>='A'&&a[i]<='Z') a[i]=a[i]+32; elseif(a[i]>='a'&&a[i]<='z') a[i]=a[i]-32; else a[i]=a[i];}} intmain() {chara[50]; intl; gets(a); l=strlen(a); exc(a,l); puts(a); return0;} 第2题: 编写函数,形成n阶杨辉三角形。 在主函数中调用该函数,形成杨辉三角形,并输出结果。 输入阶数n,输出处理后的结果。 样例输入: 5 样例输出: 1 11 121 1331 14641 #include #include voidyh(inta[][50],intl) {inti,j,k; for(k=0;k {a[k][0]=1; a[k][k]=1;} for(i=2;i {for(j=1;j a[i][j]=a[i-1][j-1]+a[i-1][j];}} intmain() {inta[50][50],n,i,j; cin>>n; yh(a,n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 函数 编程 20 习题 汇总 详细 程序 解答