实验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;
}


