西安交大C++作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安交通大学实验报告
课程计算机程序设计实验名称_按址操作-指针第 1 页共 11 页
系别__ ________ 实验日期 2013年 11月 7 日
专业班级___ ________组别实验报告日期 2013 年11月 9日
姓名___ ____学号_ ___ 报告退发 ( 订正、重做 )
同组人_________________________________ 教师审批签字
一.对比分析
优点:记录每道题自己的想法,每题都总结方法,指出自己的错误,非常好。而且作业排版截图不错,程序易懂简洁美观。
二.实验目的
(1)学习指针作为函数参数,作为函数返回值的方法;
(2)掌握函数的递归调用方法,熟练掌握函数调用的方法;
(3)学习函数重载和递归函数,并且学会使用;
(4)更加熟练的掌握动态存储分配,学会使用动态存储分配。
三.实验内容
(-)实验题目一: (必做题)使用递归算法编写如下程序:对于任意给定的实数 X 和整数k( k>0) ,计算X k。
1.程序源代码
#include
using namespace std;
double digui(double X,int k)
{
double Y;
int i=1;
if(k==1) return X;
else Y=X*digui(X,k-1);
return Y;
}
void main()
{
double x;
int n;
cout<<"请输入任意实数X:";
cin>>x;
while(1)
{
cout<<"请输入要求的幂次k:";
cin>>n;
if(n>0) break;
cout<<"输入不合法,";
}
cout<<"X^k的计算结果为:"< } 2.实验结果 (二)实验题目二:使用递归算法编写求斐波那契数列的第 n 项的函数(int fabonaci(int n)。另编写求出前n项数列的平方和的函数(int sum_f(int *pi,int n)),即计算: result = 0 2 +12 + 12 + 22 + 32 + 52 + 82 + 132 + …… 编出主函数进行验证(必须用动态存储分配),并按下面格式输出: result = 0^2+1^2 + 1^2 + 2^2 + 3^2 + 5^2 + 8^2 + 13^2 + …… 1.程序源代码 #include using namespace std; int fabonaci(int n) { int an; if(n==1) return 0; if(n==2) return 1; else an=fabonaci(n-1)+fabonaci(n-2); return an; } int sum_f(int *pi,int n) { int sum=0; for(int i=0;i { sum=sum+(*(pi+i))*(*(pi+i)); } return sum; } int main() { int n; cout<<"请输入斐波那契数列的项数n(n>0):"; cin>>n; int *pi=new int[n]; cout<<"斐波那契数列前"< cout<<"result="; for(int i=0;i for(int i=0;i { cout< } cout<<'\b'<<"="< delete []pi; return 0; } 2.实验结果 (三)实验题目三:重载求三个数中最大值的函数。三个数的类型可能是整型,实型(float),双精度型和字符型。 1.程序源代码 #include using namespace std; int max(int x,int y,int z) { return y>x?(y>z?y:z):(x>z?x:z); } float max(float x,float y,float z) { return y>x?(y>z?y:z):(x>z?x:z); } double max(double x,double y,double z) { return y>x?(y>z?y:z):(x>z?x:z); } char max(char x,char y,char z) { return y>x?(y>z?y:z):(x>z?x:z); } void main() { cout<<"int{2,5,8}最大值为:"< cout<<"float{1.2,2.3,3.4} 最大值为:"< cout<<"double{2.1,3.2,5.1}最大值为:"< cout<<"char{x,y,z}最大值为:"< } 2.实验结果 (四)实验题目四:(必做题)编写一个函数,用于去掉字符串前面的空格,其原型为: char *myltrim(char *string);