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