一、实验目的和要求
掌握函数的定义和调用方法。练习重载函数的使用。练习使用系统函数。学习使用VC++的debug功能,分析递归调用过程。
二、实验环境(软、硬件及条件)
一台安装有Visual C++ 6.0的计算机
三、实验步骤
1.编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。
2. 编写函数分别求取两个整数,3个整数,两个浮点数, 3个浮点数的最大值。
3.使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h。
4.用递归算法求N!的值(N<6),观察递归调用的过程。
实验步骤1.编写函数float Convert(float TempFer),参数和返回类型值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。示例程序lab1.cpp如下:
#include <iostream.h>
float Convert(float);
int main()
{
float TempFer;
float TempCel;
cout << "Please enter the temperature in Fahrenheit: ";
cin >> TempFer;
TempCel = Convert(TempFer);
cout << "\nHere's the temperature in Celsius: ";
cout << TempCel << endl;
return 0;
}
float Convert(float TempFer)
{
float TempCel;
TempCel = ((TempFer - 32) * 5) / 9;
return TempCel;
}
2.分别编写四个同名函数max1,在main()函数中测试函数功能。
3.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算xy的结果,再显示出来。
4.编写递归函数int fun(int n),在主程序中输入n的值,调用fun函数计算机n!的值。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。
5.使用debug中的Step Into追踪到函数内部,观察函数的调用过程。调试操作步骤如下:
1)选择菜单命令Build|Start Debug|Step into,或按下快捷键F11,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时Visual Studio中光标停在main()函数的入口处。
2)把光标移到语句answer=fun(n)前,从Debug菜单单击Run to Cursor,在程序运行的DOS窗口中按提示输入数字(如5),回到Visual Studio中,光标将停在该语句所在行,观察n及其它变量的值。
3)从Debug菜单或Debug工具栏中单击Step Into,或按下F11,程序进入fun函数,观察n,f及其他相关变量的值。重复上述操作,直到退出fun函数,分析程序的执行过程,加深对函数调用和递归调用的理解。
四、实验中遇到的问题及解决
无
实验结果及分析1.
#include<iostream>
using namespace std;
double kf(double);
int main()
{double f;
cout<<"输入华氏温度:"<<endl;
cin>>f;
cout<<"摄氏温度"<<kf(f)<<endl;
return 0;
}
double kf(double hs)
{double ss;
ss=(hs-32)*5/9;
cout<<ss<<endl;
return ss;
}
2.
#include<iostream>
using namespace std;
int fun(int a,int b)
{
return (a>b)?a:b;};
int fun(int a,int b,int c)
{int max;
if(a>b){max=(a>c)?a:c;}
if(b>a){max=(b>c?b:c);}
return max;};
double fun(double a,double b)
{
return (a>b)?a:b;};
double fun(double a,double b,double c)
{double max;
if(a>b){max=(a>c)?a:c;}
if(b>a){max=(b>c?b:c);}
return max;};
int main()
{
cout<<"最大值:"<<fun(4,5)<<endl;
cout<<"最大值:"<<fun(4,5,6)<<endl;
cout<<"最大值:"<<fun(4.5,6.3)<<endl;
cout<<"最大值:"<<fun(4.5,6.3,9.1)<<endl;
return 0;
}
3.#include<iostream>
using namespace std;
#include<math.h>
int main()
{
int x,y;
cout<<"请依次输入x,y:"<<endl;
cin>>x>>y;
cout<<x<<"的"<<y<<"次方为:"<<pow(x,y)<<endl;
return 0;
}
4.#include<iostream>
using namespace std;
int fun(int j)
{
if(j==0)
return 1;
else
return j*fun(j-1);
}
void main()
{ int n;
cout<<"输入的n值要求:n<6"<<endl;
cin>>n;
if(n<6)
{cout<<n<<"!="<<fun(n)<<endl;}
else {cout<<"输入的n值不在题目范围"<<endl;};
}
