- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安交通大学实验报告
课程__计算机程序设计__实验名称__指针与函数__第 1 页 共 25 页
系 别____ _______ 实 验 日 期 2014 年 4月 18日
专业班级__ ____组别_____________ 实 验 报 告 日 期 2014 年 4 月 19日
姓 名___ _______学号_ _ 报 告 退 发 ( 订正 、 重做 )
同 组 人_________________________________ 教 师 审 批 签 字
一、
学会使用递归函数函数重载,熟练动态分配等指针使用方法、
(一)第一题:1、(必做题) 使用递归算法编写如下程序:对于任意给定的实数 X 和整数k( k0) ,计算 Xk 。
: #includeiostream
using namespace std;
double yunsuan(double x,int k);//递归函数用于计算x^k
int main()
{
double x;
int k;
cout请输入实数x:;
cinx;
cout请输入正整数k:;
cink;
while(k=0)//判断输入的k是否满足要求,若否则提示输入错误并重新输入
{
cout您的输入有误!请输入正整数:;
cink;
}
cout计算结果是:x^k=yunsuan(x,k)endl;//输出运算结果
return 0;
}
double yunsuan(double x,int k)
{
if(k==1)//k=1时不再进行循环,输出值为x
return x;
else
{
double s=x*yunsuan(x,k-1);//对于k大于1的情况,进入下一循环
return s;
}
}
2.:
1)输入X正数:
(2)输入X正整数:
(3)输入x为负数:
(4)输入k为负数:
3.问题分析:
的循环方式是:k-1).设f(x,k)=x^k,那么就有x,k)=f(x,k-1)*x.而其结束递归的条件是k=1,有x,1)=x,由此给出初值。):使用递归算法编写求斐波那契数列的第 n 项的函数,并编出主函数进行验证。 :#includeiostream
using namespace std;
int fib(int n) //递归函数,计算斐波那契数列的第n项
{
if(n==0)//对于n=0不再进行递归,返回值0
return 0;
else
{
if(n==1)
return 1;//对于n=1不再进行递归,返回值1
else
{
int s=fib(n-1)+fib(n-2);//将计算第n项归为计算第n-1和n-2项
return s;
}
}
}
int main()
{
int n;
cout请输入要计算的项数(非负整数):;//提示输入项数,首项为第0项
cinn;
while(n0)//对于不符合要求的输入值重新输入
{
cout输入有误,请输入非负整数:;
cinn;
}
cout计算结果是:fib[n]=fib(n)endl;//输出计算结果
return 0;
}
:
)正确正整数):
(2)输入项数有误(负数):
3.问题分析:
该题的递归方式:第n项为两项:ib(n)=fib(n-1)+fib(n-2),由此递归至fib(1)和fib(2)时结束递归,(1)和fib(2)已知。
(三) max ,这些数值可能是整型数、实型数和字符型,函数的返回值为两个数值中的最大值。:#includeiostream
using namespace std;
double zhuanhuan(char *c)//为了避免语句的重复,将字符与数值转换部分作为函数
{
int i=0;
double x=0;
if(c[0]==-||c[0]==+)//若首字符为‘-’或者‘+’则跳过
i++;
while(c[i]!=\0c[i]!=.)//对于整数部分逐位累加,直至遇到小数点或者数字结束
{
x=x*10+(c[i]-0);
i++;
}
if(c[i]==.)//对于小数部分进行累加
{
double s;//s用来反映数字所在位置是小数点后第几位,就用该数乘以的负几次方(s)
i++;//从小数点后的一位开始循环
for(s=0.1;c[i]!=\0;i++)
{
x=x+s*(c[i]-0);
s=s/10;
}
}
if(c[0]==-)//若为负数,则
您可能关注的文档
- 天津站广场机电安装工程施工组织设计:.doc
- 铜业股份有限公司绩效考核指标汇总:.doc
- 天能脱硫检规修订版:.doc
- 统计学贾俊平_第四版课后习题答案:.doc
- 天然气场站讲义:.doc
- 投标文件二(技术标):.doc
- 天然气南外环路高压管道连接线工程施工方案:.doc
- 投标正文(水泥):.doc
- 天线的论文:.doc
- 投篮练习方法:.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)