C++函数编程20道习题汇总含其详细程序解答 下载本文

函数作业及解答

第1题:

编写两个函数,函数功能分别是:求两个整数的最大公约数和最小公倍数,要求输入输出均在主函数中完成。 样例输入:15 25 样例输出:5 75

#include int gys(int a,int b) {int i;

for(i=a;i>0;i--)

if (a%i==0&&b%i==0) { return i; break;} }

int gbs(int a,int b) {int i;

for(i=a;;i++)

if(i%a==0&&i%b==0) { return i; break;} }

int main()

{int a,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

#include int factors(int num,int k) {int n=0,a; a=num%k; while(a==0) {n++;

num=num/k; a=num%k; }

return n;} int main() {int num,k,b;

cin>>num>>k; b=factors(num,k); cout<

第3题:

编写函数,函数功能是:计算n的阶乘,要求输入输出均在主函数中完成。 样例输入:5 样例输出:120、

#include int jc(int n) {int a,b=1;

for(a=1;a<=n;a++) b=a*b;

return b;} int main() {int n,s; cin>>n; s=jc(n);

cout<

第4题:

编写函数,函数功能是:计算k以内(包括k)最大的10个(不足10个则是所有的)能被13或17整除的自然数之和。要求输入输出均在主函数中完成。 样例输入:500 样例输出:4622

#include int sum(int k) { int n,c=0,s=0; for(n=k;n>0;n--)

{if(n==0||n==0) {c++;

s+=n;} if(c>=10) break;} return s;} int main() {int k,s;

cin>>k; s=sum(k);

cout<

- - 1 - -

函数作业及解答

第5题:

编写函数,函数功能是:根据下列公式求π的值(直到某一项的值小于给定精度e为止),精度e由键盘输入,要求输入输出均在主函数中完成。

样例输入:0.0005 样例输出:3.14058 #include double pai(double e) {double s,a,k,p; s=1; a=1/3.0;

for(k=2;;k++)

{s+=a;

a=a*(k/(k*2+1)); if(a

{double e,p; cin>>e; p=pai(e);

cout<

第6题: 编写程序求

要求使用函数,函数功能是:求某个数的阶乘。n由键盘输入,输入输出均在主函数中完成。注意:0!=1。 样例输入:3 样例输出:10

#include int jc(int a) {int s=1,i; if(a==0) s=1; else

{for(i=1;i<=a;i++) s=s*i;} return s;} int main() {int n,k,s;

double sum=0;

cin>>n;

for(k=0;k<=n;k++) {s=jc(k); sum+=s;}

cout<

第7题: 求数列

要求使用函数计算该序列的前N项和SN,直到SN 大于q为止,q由键盘输入,输入输出均在主函数中完成。 样例输入:50

样例输出:50.4167、 #include float sum(float q) {float s=0,a,n; for(n=1;s<=q;n++) {a=(n+1.0)/n;

s+=a;} return s;} int main() {

float q,s;

cin>>q; s=sum(q);

cout<

- 2 -

函数作业及解答

第8题:

求数列的前n项和

要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:50

样例输出:1.96079 #include float myx(int n) {float a; int i,s=0;

for(i=1;i<=n;i++) s+=i;

a=1.0/s; return a;} int main() {int n,i; float s=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 #include int jw(int x) {int a,n,m; if(x<10) a=0;

else

{n=int(log10(x))+1; m=x%int(pow(10,n-1)); a=m;} return a;} int main()

{int x,c; cin>>x; c=jw(x);

cout<

第10题:

编写函数,函数功能是:判断输入的字符是否为数字字符。如果是,则输出YES,否则输出NO,要求输入输出均在主函数中完成。 样例输入:5 样例输出:YES

样例输入:B 样例输出:NO #include using namespace std; int pdsz(char n) {int flag;

if(n>='0'&&n<='9') flag=1;

else flag=0;

return flag;} int main() {char n; n=getchar();

if(pdsz(n)==1) cout<<\else

cout<<\return 0;}

- 3 -

函数作业及解答

第11题:

编写函数,函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的百位和十位。a、b由键盘输入,输入输出均在主函数中完成。 样例输入:45 12 样例输出:4125

#include #include int hb(int a,int b) {int q,g,m,c; q=a/10; return 0;}

g=a; m=b*10;

c=q*1000+m+g; return c;} int main()

{int a,b,c; cin>>a>>b; c=hb(a,b);

cout<

第12题:

求数列的前n项和

要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:10

样例输出:0.382179 #include #include double dx(double n) {double a,b,c; a=pow(-1,n+1); b=n*(n+1);

c=a/b; return c;} int main()

{double n,s=0,i,a; cin>>n;

for(i=1;i<=n;i++)

{a=dx(i); s+=a;}

cout<

第13题:

求数列的前n项和

要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:3

样例输出:123

#include #include int an(int n) {int s=0,m,a,i; for(i=1;i<=n;i++) {m=int(pow(10,i-1));

a=m; s+=a;} return s;} int main()

{int n,i,a,sum=0; cin>>n;

for(i=1;i<=n;i++) {a=an(i); sum+=a;}

cout<

- 4 -