当前位置:文档之家› C++语言程序设计实验答案-函数的应用

C++语言程序设计实验答案-函数的应用

C++语言程序设计实验答案-函数的应用实验03函数的应用(2学时)(第3章函数)一、实验目的(1) 掌握函数的定义和调用方法。

(2) 练习重载函数的使用。

(3) 练习使用系统函数。

(4) 学习使用Visual Studio 2010的调试功能,使用“逐语句”追踪到函数内部。

二、实验任务3_1(习题3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。

3_2 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。

3_3 使用系统函数pow(x, y)计算x y的值,注意包含头文件cmath。

3_4(习题3-13)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

三、实验步骤1.(编程,习题3-8)把华氏温度转换为摄氏温度。

编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。

程序名:lab3_1.cpp。

★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer))//lab3_1(习题3-8)#include<iostream>using namespace std;float Convert(float TempFer);void main(){float f;cout<<"输入一个华氏温度值:";cin>>f;cout<<"华氏温度"<<f<<"转换为摄氏温度的值是"<<Convert(f)<<endl;}float Convert(float TempFer){return (TempFer-32)*5/9;}2.(编程)编写重载函数,求2或3个数中的最大数。

编写4个同名函数Max1,分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值,实现函数重载,在main()函数中测试函数功能。

程序名:lab3_2.cpp。

★程序及运行结果:(注意:分别测试4个函数)//lab3_2.cpp#include<iostream>using namespace std;int Max1(int a,i n t b){cout<<"调用函数: int Max1(int a,intb)"<<endl;return a>b?a:b;}int Max1(int a,int b,int c){cout<<"调用函数: int Max1(int a,int b,intc)"<<endl;return a>b ? (a>c?a:c) : (b>c?b:c);}double Max1(double a,double b){cout<<"调用函数: double Max1(doublea,double b)"<<endl;return a>b?a:b;}double Max1(double a,double b,double c){ cout<<"调用函数: double Max1(doublea,double b,double c)"<<endl;return a>b ? (a>c?a:c) : (b>c?b:c);}void main(){int a,b,c,ii;double d,e,f,dd;cout<<"输入2个整数:";cin>>a>>b; ii=Max1(a,b);cout<<a<<"和"<<b<<"的最大数是:"<<ii<<endl;cout<<"\n输入3个整数:";cin>>a>>b>>c; ii=Max1(a,b,c);cout<<a<<","<<b<<"和"<<c<<"的最大数是:"<<ii<<endl;cout<<"\n输入2个双精度数:";cin>>d>>e; dd=Max1(d,e);cout<<d<<"和"<<e<<"的最大数是:"<<dd<<endl;cout<<"\n输入3个双精度数:";cin>>d>>e>>f; dd=Max1(d,e,f);cout<<d<<","<<e<<"和"<<f<<"的最大数是:"<<dd<<endl;}方法2:int Max1(int a,i n t b){if(a>b) return a;else return b;}int Max1(int a,int b,int c){if(a>b)if(a>c) return a;else return c;elseif(b>c) return b;else return c;}方法3:int Max1(int a,i n t b){if(b>a) a=b;return a;}int Max1(int a,int b,int c){if(b>a) a=b;if(c>a) a=c;return a;}3.(编程)调用系统函数pow(x, y)计算x的y次幂。

在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x, y)函数计算x的y次幂的结果,再显示出来。

程序名:lab3_3.cpp。

/*重载函数pow的函数原型:long double pow(long double,int);float pow(float,int);double pow(double,int);*/★程序及运行结果:(注意:不要编写函数pow(…),直接调用)//lab3_3.cpp#include<iostream>#include<cmath>//无此行也可以using namespace std;void main(){float x; int y;cout<<"输入基底的值:";cin>>x;cout<<"输入幂的值:";cin>>y;cout<<x<<"的"<<y<<"次幂的结果为"<<pow(x,y)<<endl;}4.(验证,习题3-13)编写递归函数求Fibonacci级数。

编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。

公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1;使用if语句判断函数的出口,在程序中用cout语句输出提示信息。

程序名:lab3_4.cpp。

(程序见步骤5)★程序的运行结果:(注意:运行步骤5的程序,输入6)5.(要求)用Debug调试的程序文件lab3_4.cpp。

使用“调试”中的“逐语句”追踪到函数内部,观察函数的调用过程,参考程序如下://lab3_4.cpp#include<iostream>using namespace std;int fib(int n);int main(){int n,answer;cout<<"输入一个正整数:";cin>>n;cout<<"\n";answer=fib(n);cout<<answer<<" 是第"<<n<<" 个Fibonacci 数。

\n";return 0;}int fib(int n){cout<<"计算fib("<<n<<")......";if(n<3){cout<<"返回1!\n";return (1);}else{cout<<"调用fib("<<n-2<<") 和fib("<<n-1<<");\n";return (fib(n-2)+fib(n-1));}}6.(操作)调试步骤。

调试操作步骤如下:(1)选择菜单命令“调试| 逐语句”,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时在源码中光标停在main()函数的入口处。

(2)把光标移到语句“answer=fib(n);”前,并在该行单击鼠标右键,再单击“运行到光标处”,在程序运行的DOS窗口中按提示输入数字6,光标停在语句“answer=fib(n);”前,观察一下n的值(观察方法见实验2)。

(3)单击“逐语句”,程序进入fib函数,观察一下n的值。

(4)把光标移到语句“return(fib(n-2)+fib(n-1));”前,单击“运行到光标处”。

(5)再单击“逐语句”,程序递归调用fib函数,再进入fib函数,观察一下n的值。

(6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。

把光标移到语句“return(fib(n-2)+fib(n-1));”前,单击Runto Cursor。

再单击Step Into。

相关主题