实验4函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用 【实验内容】 1.编程求由键盘输入的三个数中最大值。(用函数调用来实现。) #include <iostream. h> (float x, float y, float z); void main() float a, b, c, cout<<"请输入三个数:"; cout<<"输入的三个数的最大值为:<<max(a,b,c)<<end float max(float x, float y, float z) float maxnum: maxnum =x-y.x\ maxnum=maxnum>z? maxnum: z; return maxnum 2.编写一个求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) i double val= 1.0; val= valx: return(val) 3.编程求1!+21+….+15的值。(用函数调用来实现。) #include <iostream. h> int nn(int i); void mainO fint i; long int sum=0: for(i=1;i=15;i++)
实验 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(+sum cout<<sum<<endl int nn(int i) f int n=l: for( int jFl;j<=i;j++) return n; i 4编写程序,求两个自然数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); rinf"%u,%uⅦ",yby); unsigned int yue(unsigned int x, unsigned int y) int t: if (x<y ftx x-i y=t;) while ( yl=0) ft=x%y return x: 5编程输出1000以内的所有亲密数对,并输出所有完数之和(用函数调用 来实现。) 注:亲密数:若自然数m的所有因子(包括1但不包括自身)之 和为n,而n的所有因子之和为m,则m,n为一对亲密数 完数:若自然数m等于它的所有因子(包括1但不包括自身) 之和,则m为完数。(选作题) #include <stdio. h> int yzh(int a); void main() fint m, sl, 2, sum; for(mF2;m<=1000;m++ f sl=yzh(m); s2=yzh(s1);
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);
printf("%d%4d是一对亲密数n"m,sl); printf("所有完数的和为%dn",um); int yzh(int a for(int i=2; i<=a/2; i++) fif(a%i==0) n=n+i; n return
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; }