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

更新时间:2024-03-09 01:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

函数作业及解答

第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 -

函数作业及解答

第14题: 求满足

的n的最大值,要求使用函数,函数功能是:计算

n的立方,k由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:10000

样例输出:13

#include #include int lf(int x) {int a; a=x*x*x;

return a;} int main()

{int k,s=0,i,n=0,a; cin>>k;

for(i=1;s

{a=lf(i); s+=a;} n=i-2;

cout<

第15题: 求数列

直到相邻两项之差的绝对值小于1E-6为止。要求使用函数,函数功能是:计算数列的每一项,x由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:0.21

样例输出:1.1

#include #include float sn(float x,float n) {float s=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);} return s;} int main()

{float x,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

c*=k; {p=an(x,i);

#include

#include

double an(double x,double n) {double a,b,k,c=1,d,e; a=pow(-1,n); b=pow(x,2*n);

for(k=1;k<=2*n;k++)

d=1/c; e=a*b*d; return e;} int main()

{double x,s=1,i,p; cin>>x; for(i=1;;i++)

s+=p;

if(fabs(p)<0.00001) break;}

cout<

- 5 -

函数作业及解答

第17题:

利用级数展开式计算sinx

直到某一项的绝对值小于0.00001为止。要求使用函数,函数功能是:计算数列的每一项,x由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:0 样例输出:0

样例输入:3

样例输出:0.14112 #include #include

double an(double x,double n) {double f,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; return f;} int main()

{double x,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 #include int jc(int x) {int a=1,k;

for(k=1;k<=x;k++) a*=k; return a;}

样例输入:6 样例输出:40450

int main()

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

函数作业及解答

第19题: 求数列

其中分母为n以内(包括n)的素数。要求使用函数,函数功能是:计算数列的每一项,n由键盘输入。累加过程和输入输出均在主函数中完成。 样例输入:50 样例输出:1.66165

#include #include float an(int n) {

float a,b=0,c,d; int i; a=0;

for(i=1;i

if(a==1) d=1.0/n; else d=0; return d; }

int main() {

float s=0,n,a; int i; cin>>n;

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

a=an(i); s+=a; }

cout<

第20题:

编写程序求m和n之间(包括m和n,m<=n)所有素数的平方根之和。要求使用函数,函数功能是:判断某一个数是否为素数。m和n由键盘输入,要求输入输出均在主函数中完成。 样例输入:100 999 样例输出:3157.48

#include #include int pd(int n)

{int i,m=0,flag=0; for(i=1;i<=n;i++) if(n%i==0) m++;

if(m==2) flag=1;

return (flag);} int main()

{double m,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。要求输入输出均在主函数中完成。 样例输入:4647 3 样例输出:4 样例输入:23523 7 样例输出:0

#include #include int digit(int x,int k) {int n,s,a,b;

n=int(log10(x))+1; if(n

s=0; else

{a=x/int(pow(10,n-k)); b=a;} return b;} int main()

{int num,k,t; cin>>num>>k; t=digit(num,k); cout<

- 7 -

函数作业及解答

第1题: 编写函数,将字符串中的大写字母变成对应的小写字母,小写字母变成对应的大写字母,其它字符不变。在主函数中调用该函数,完成任意字符串的转换,并输出结果。输入字符串(允许包含空格),输出处理后的结果。 样例输入:How Are You? 样例输出:hOW aRE yOU?

#include using namespace std; #include void exc(char a[],int l) {int i;

for(i=0;i

{if(a[i]>='A'&&a[i]<='Z')

a[i]=a[i]+32;

else if(a[i]>='a'&&a[i]<='z') a[i]=a[i]-32; else

a[i]=a[i];}} int main() {char a[50];

int l; gets(a); l=strlen(a); exc(a,l); puts(a); return 0;}

第2题:

编写函数,形成n阶杨辉三角形。在主函数中调用该函数,形成杨辉三角形,并输出结果。输入阶数n,输出处理后的结果。 样例输入:5 样例输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

#include #include

void yh(int a[][50],int l) {int i,j,k;

for(k=0;k

for(i=2;i

a[i][j]=a[i-1][j-1]+a[i-1][j];}} int main()

{int a[50][50],n,i,j; cin>>n; yh(a,n);

for(j=0;j

第3题:

编写函数,求一个字符串的长度。在主函数中调用该函数,输出结果。输入字符串(允许包含空格),输出字符串的长度。 样例输入:How Are You?

样例输出:12

#include using namespace std; #include int len(char a[]) {int l;

l=strlen(a); return l;} int main() {char a[50]; int l;

- 8 -

gets(a); l=len(a);

cout<

函数作业及解答

第4题:

编写函数,将字符数组s2中的前n个字符复制到字符数组s1中,不允许使用strcpy函数。在主函数中调用该函数,完成任意字符串的复制,并输出结果。输入分2行,第一行为字符串(不包含空格),第二行为n的值,输出处理后的结果。 样例输入: Hello,world! 8

样例输出:Hello,wo

#include

void cp(char a[],char b[],int n) {int i;

for(i=0;i

b[n]='\\0';} int main()

{char a[50],b[50]; int n;

cin>>a>>n;

cp(a,b,n);

cout<

第5题:

编写函数,函数功能是:统计整数n的各位上出现数字1、2、3的次数。要求输入输出均在主函数中完成。 样例输入:123114350 样例输出:3 1 2

#include using namespace std; #include

void cs(char a[],int b[],int l) {int i;

b[0]=0;b[1]=0;b[2]=0; for(i=0;i

b[0]++;

else if(a[i]=='2') b[1]++;

else if(a[i]=='3') b[2]++;

else continue;}} int main() {char a[50];

int b[50],l; gets(a); l=strlen(a); cs(a,b,l);

cout<

第6题:

编写程序完成进制转换,要求使用函数,函数功能是:十进制转换为二进制,输入输出均在主函数中完成。 样例输入:125

样例输出:1111101 #include int zh(int a[],int x) {int i=-1; while(x!=0) {i++;

a[i]=x%2; x=x/2;} return i;} int main()

{int a[32],m,n,k;

cin>>m; n=zh(a,m);

for(k=n;k>=0;k--) {cout<

第7题:

编写两个函数,将n个正整数中的素数按升序排序。函数功能分别是:判断一个数是否为素数,以及对数组进行排序。输入分2行:第一行为n的值,第二行为n个整数。要求输入输出均在主函数中完成。 样例输入:9 9 8 7 6 5 4 3 2 1

样例输出:2 3 5 7

- 9 -

函数作业及解答

#include

int order(int a[],int b[],int l) {int i,m,j,k=0,q,w; for(i=0;i

for(j=1;j<=a[i];j++) if(a[i]%j==0) m++; if(m==2) return 0;}

{b[k]=a[i]; k++;}}

for(i=0;i

for(j=i+1;jb[j]) q=j; if(q!=i)

{w=b[q];b[q]=b[i],b[i]=w;}}

return k;} int main()

{int a[40],b[40],n,l,q; cin>>n;

for(l=0;l>a[l];

q=order(a,b,n); for(l=0;l

第8题:

编写函数,功能是交换数组中的最大数和最小数的位置,并计算所有数之和。例如数组a有5个元素3、4、1、5、2,将最大数5和最小数1的位置交换后得到3、4、5、1、2,总和为15。程序中用到的主函数为:

#include int fun(int a[],int l)

{int max=0,i,min=0,w,s=0; for(i=1;ifor(i=1;ia[i]) min=i;

w=a[max];a[max]=a[min];a[min]=w;

for(i=0;i

{int a[50],n,i,sum; cin>>n;

for(i=0;i>a[i]; sum=fun(a,n); for(i=0;icout<

第9题:

编写子函数fun,功能是挑出字符串中ASCII码值为偶数的大写字母并存放在原字符串中。例如字符串str为\,其中满足条件的字符为'B'和'D',因此调用fun函数后,字符串str变为\。程序中用到的主函数为:

- 10 -

函数作业及解答

#include #include #include void zf(char a[]) {

char b[50]; int i,j=0,n; n=strlen(a); for(i=0;i

if(a[i]>='A'&&a[i]<='Z'&&a[i]%2==0) {

b[j]=a[i]; j++; }

for(i=0;i

a[j]='\\0'; }

int main() {

char a[100]; gets(a); zf(a); puts(a); return 0;}

第10题:

编写程序完成进制转换,要求使用函数,函数功能是:十进制转换为八进制,输入输出均在主函数中完成。 样例输入:125 样例输出:175

#include #include int zh(int b[],int n) {

int i=0; while(n>0) {

b[i]=n%8;

i++; n=n/8; }

b[i]='\\0'; return i; }

int main() {

int b[100]; int n,a,i; cin>>n; a=zh(b,n);

for(i=a-1;i>=0;i--) cout<

- 11 -

本文来源:https://www.bwwdw.com/article/lz3a.html

Top