实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈编程求由键盘输入的三个数中最大值。(用函数调用来实现。) #include <iostream.h> float max(float x, float y,float z); void main( ) {float a,b,c; cout <<"请输入三个数:"; cin>>a>>b>>c; cout <<"输入的三个数的最大值为:"<<max(a,b,c)<<endl; } float max(float x, float y,float z) { float maxnum; maxnum =x>y?x:y; maxnum=maxnum>z?maxnum:z; return maxnum;} ⒉编写一个求x的n次方的函数,其中x,n由键盘输入。(用函数调用来实现。) #include <iostream.h> double xn (double x, int n); void main(void) {double x; int n; cin>>x>>n; cout << x<<"的"<<n<<"次方为:" << xn(x,n) << endl; } double xn (double x, int n) { double val = 1.0; while (n--) val = val*x; return(val); } ⒊编程求1!+2!+……+15!的值。(用函数调用来实现。) #include <iostream.h> int nn(int i); void main() { int i; long int sum=0; for (i=1;i<=15;i++) sum=nn(i)+sum; cout<<sum<<endl; } int nn(int i) { int n=1; for( int j=1;j<=i;j++) n=n*j; return n;} ⒋编写程序,求两个自然数m和n的最大公约数和最小公倍数。(用函数调用来实现。) #include <stdio.h> unsigned int yue(unsigned int x,unsigned int y); void main ( ) {unsigned int m,n,b,y; scanf ("%u%u",&m,&n); b=m*n; y=yue(n,m); printf ("%u,%u\n",y,b/y); } unsigned int yue(unsigned int x, unsigned int y) {int t; if (x<y) { t=x; x=y; y=t;} while (y!=0) {t=x%y; x=y; y=t;} return x;} ⒌编程输出1000以内的所有亲密数对,并输出所有完数之和(用函数调用 来实现。) 注:亲密数:若自然数m的所有因子(包括1但不包括自身)之 和为n,而n的所有因子之和为m,则m,n为一对亲密数。 完 数:若自然数m等于它的所有因子(包括1但不包括自身) 之和,则m为完数。(选作题) #include <stdio.h> int yzh(int a); void main( ) {int m,s1,s2,sum=0; for(m=2;m<=1000;m++) { s1=yzh(m); if(m==s1) sum+=m; s2=yzh(s1); if(m==s2) printf("%d%4d是一对亲密数\n",m,s1); } printf("所有完数的和为%d\n",sum); } int yzh(int a) { int n=1; for(int i=2;i<=a/2;i++) {if(a%i==0) n=n+i; } return n; }