资源描述
上海电力学院
实验报告
课程名称 高级程序设计c++(1) 实验项目 实验6 函数(2)
姓名 学号 班级 专业 信息安全
同组人姓名 无 指导教师姓名 田秀霞 实验日期 2015年12月2日
一、实验目的
1、掌握重载函数的使用,函数的默认参数。
2. 掌握函数递归。
二、实验内容和步骤
编程序并上机调试运行。
1、编写重载函数Max1可以分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l
l int Max1(int x,int y);
l int Max1(int x,int y,int z);
l double Max1(double x,double y);
l double Max1(double x,double y,double z);
l
l int main()
l {
l int x=2,y=3,z=4;
l double m=3.2,n=1.4,p=3.9;
l cout<<x<<','<<y<<"中最大的值是:"<<Max1(x,y)<<endl;
l cout<<x<<','<<y<<','<<z<<"中最大的值是:"<<Max1(x,y,z)<<endl;
l cout<<m<<','<<n<<"中最大的值是:"<<Max1(m,n)<<endl;
l cout<<m<<','<<n<<','<<p<<"中最大的值是:"<<Max1(m,n,p)<<endl;
l return 0;
l }
l
l int Max1(int x,int y)
l {
l return x>=y?x:y;
l }
l int Max1(int x,int y,int z)
l {
l int max;
l max=x>y?x:y;
l max=z>max?z:max;
l return max;
l }
l
l double Max1(double x,double y)
l {
l return x>=y?x:y;
l }
l double Max1(double x,double y,double z)
l {
l double max;
l max=x>y?x:y;
l max=z>max?z:max;
l return max;
l }
l 运行结果(直接截取结果图)
2、编写函数,求x的y次方, 如果用户没有给出y的值,则默认输出x.(提示: 用默认参数值实现). 运行调试程序,熟悉调试窗口,熟悉单步调试和断点调试的过程.
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l double powxy(double x,int y=1);
l int main()
l {
l double x;
l int y;
l char choose;
l cout<<"请输入x:";
l cin>>x;
l cout<<"要输入y么?('y'输入,'n'不输入):";
l cin>>choose;
l if(choose=='y')
l {
l cout<<"请输入y:";
l cin>>y;
l cout<<x<<"的"<<y<<"次方为:"<<powxy(x,y);
l }
l else
l cout<<x<<"的次方为:"<<powxy(x);
l return 0;
l }
l double powxy(double x,int y)
l {
l double s=1;
l for(int i=1;i<=y;i++)
l s*=x;
l return s;
l }
l
l 运行结果(直接截取结果图)
3、求两个正整数m和n(由用户输入)之间的非素数之和(包括m和n).要求用函数实现,
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l bool f(int i);
l int summn(int m,int n);
l int main()
l {
l int m,n;
l cout<<"请输入两个整数"<<endl;
l cin>>m>>n;
l if(m<n) {int t; t=m;m=n;n=t;}
l cout<<summn(m,n);
l return 0;
l }
l int summn(int m,int n)
l {
l int i,s=0;
l for(i=n;i<=m;i++)
l {
l if(!f(i)) s=s+i;
l }
l return s;
l }
l
l bool f(int i)
l { int j;
l for(j=2;j<i;j++)
l if(i%j==0) return false;
l return true;
l }
l 运行结果(直接截取结果图)
4. 在主程序中提示输入整数n,编写函数用递归的方法求1+2+….+n的值。
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l int sum1ton(int n);
l int main()
l {
l int n;
l cout<<"请输入n:";
l cin>>n;
l cout<<"从到"<<n<<",累加和为:"<<sum1ton(n);
l return 0;
l }
l int sum1ton(int n)
l {
l if(n==1) return 1;
l else return sum1ton(n-1)+n;
l }
l
l 运行结果(直接截取结果图)
5. 用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入、输出。递归公式为:
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l double p(int n,double x);
l int main()
l {
l int n;
l double x;
l cout<<"请输入n:";
l cin>>n;
l if(n<0)
l {
l cout<<"错误:n必须为大于的整数,程序将结束!";
l return;//main函数结束运行
l }
l cout<<"请输入x:";
l cin>>x;
l cout<<"p("<<n<<","<<x<<")="<<p(n,x);
l return 0;
l }
l double p(int n,double x)
l {
l if(n==0) return 1;
l else if(n==1) return x;
l else return ((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
l }
l
l 运行结果(直接截取结果图)
6. 打印1!+2!+3!+……+10!之和。要求用函数实现。
l 程序源代码(注意添加注释)
l #include<iostream>
l using namespace std;
l long sumjc(int n);
l long jc(int n);
l int main()
l {
l cout<<sumjc(10);
l return 0;
l }
l long sumjc(int n)
l {
l if(n==1) return jc(n);
l else return jc(n)+sumjc(n-1);
l }
l long jc(int n)
l {
l if(n==1||n==0) return 1;
l else return n*jc(n-1);
l }
l
l 运行结果(直接截取结果图)
三、实验中遇到的问题以及解决方法
四、实验结论与体会
1、 结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。
2、 添加适当注释,注意书写的层次结构。
3、 整理上机步骤,总结经验和体会。
展开阅读全文