- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 函数
实验三 函数调用
一、目的和要求
1.了解函数的定义方法,理解函数的调用;
2.初步掌握函数的递归、嵌套调用;
3.了解函数调用的实参与形参的传递,以及参数默认值的设置。
4.学习并了解重载函数、内联函数的基本概念。
二、实验设备及分组
1.? Windows2000
2.? Visual C++6.0
3.? PC机。
三、内容和步骤
(一)验证实验程序
1.编写一个函数,用递归的方法求1+2+3+4+…+n的值。在主函数中进行输入输出。
解:
#include iostream.h
int fun(int n)
{
int z;
if(n=0)
z=0;
else
z=n+fun(n-1);
return(z);
}
void main(void)
{
int x,sum;
cout请输入X的值endl;
cinx;
sum=fun(x);
cout求和结果为:sumendl;
}
运行结果:
请输入X的值
10
求和结果为:55
2.编写程序,输入m和n(nm),求的值。
分析:已知
根据公式,只要自定义一个函数计算阶乘,即可通过函数调用求出的值。
解:
阶乘函数定义如下:
double fact(int k)
{
int p=1;
if((k==0)||(k==1))
return p;
else
{
for(int i=1;i=k;i++)
p=p*i;
return p;
}
}
一个完整的参考程序如下:
#include iostream.h
double fact(int);
void main()
{
int m,n;
double c;
coutplease inputendl;
l1: coutn=;
cinn;
coutm=;
cinm;
if (nm) {
coutn must bigger than m!,please reinput:endl;
goto l1;
}
c= fact(n)/( fact(m)* fact(n-m));
coutc=cendl; //B
}
double fact(int k)
{
int p=1;
if((k==0)||(k==1))
return p;
else
{
for(int i=1;i=k;i++) p=p*i;
return p;
}
}
思考:
????????? 分别输入n=0,1,3,m=0,1,2测试程序。
????????? 试用静态存储变量设计阶乘函数。
3.编写程序,求两个自然数m和n的最大公约数和最小公倍数。
分析:
最大公约数就是能同时整除m和n的最大正整数,可用欧几里德算法(也称辗转相除法)求解。应用欧几里德算法计算两个数的最大公约数的方法是:求两个数(m、n)相除的余数r(r=m/n mn),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。
最小公倍数=m×n/最大公约数。
解:
#include iostream.h
int fun1(int c,int d)
{
int r;
r=c%d;
while(r!=0)
{
c=d;
d=r;
r=c%d;
}
return d;
}
void main()
{
int m,n,e,d;
coutm n=;
cinmn;
e=fun1(m,n);
d=m*n/e;
cout 最大公约数为:eendl;
cout 最小公倍数为:dendl;
}
思考:
????????? 输入两个数m=36,n=24观察程序运行结果。
????????? 用递归调用的方法实现程序编写,参考程序如下:
# include iostream.h
int fun1(int c,int d)
{
int r;
r=c%d;
if(r!=0)
{
c=d;
d=r;
fun1(c,d);
}
return d;
}
void main()
{
int m,n,e,d;
coutm n=;
cinmn;
e=fun1(m,n);
d=m*n/e;
cout 最大公约数为:eendl;
cout 最小公倍数为:dendl;
}
????????? 编写计算三个数最大公约数的程序。
4.分别输入整数半径和实数半径,使用函数重载计
文档评论(0)