一、实验目的
(1)掌握内联函数、重载函数和参数带默认值的函数的定义和使用;
(2)掌握通过参数在函数间传指针和传引用的方法;
(3)熟悉Visual C++ 6.0 IDE或VC++ 2010调试函数的方法。
二、实验平台或环境
VC++ 6.0或VC++ 2010
三、实验内容和要求
(1)实验内容
实验六 函数(2)
(2)提交形式
电子报告+书面报告
四、实验步骤和结果
1.
\#include <iostream>
using namespace std;
inline int max(int a,int b)
{
if(a>=b)return a;
else return b;
}
inline double max(double a,double b)
{
if(a>=b)return a;
else return b;
}
int main()
{
int a,b,c;
cout<<"输入三个整数:";
cin>>a>>b>>c;
cout<<"最大数:"<<max(max(a,b),c)<<endl;
double x,y,z;
cout<<"输入三个实数:";
cin>>x>>y>>z;
cout<<"最大数:"<<max(max(x,y),z)<<endl;
return 0;
}
2.
\#include <iostream>
\#include <cmath>
using namespace std;
int root(float a,float b,float c,float* px1,float* px2)
{
float delta=b*b-4*a*c;
if(delta>0){
delta=sqrt(delta);
*px1=(-b+delta)/(2*a);
*px2=(-b-delta)/(2*a);
return 2;
}
else if(delta==0){
*px1=*px2=-b/(2*a);
return 1;
}
else
return 0;
}
或
int root(float a,float b,float c,float& rx1,float& rx2)
{
float delta=b*b-4*a*c;
if(delta>0){
delta=sqrt(delta);
rx1=(-b+delta)/(2*a);
rx2=(-b-delta)/(2*a);
return 2;
}
else if(delta==0){
rx1=rx2=-b/(2*a);
return 1;
}
else
return 0;
}
int main(){
float a,b,c;
float x1,x2;
cout<<"输入三个系数:";
cin>>a>>b>>c;
int n=root(a,b,c,&x1,&x2);
if(n==2)
cout<<" 方程有两个不等实根:x1="<<x1<<",x2="<<x2<<endl;
else if(n==1)
cout<<" 方程有两个相等实根:x1=x2="<<x1<<endl;
else
cout<<"方程没有实根!"<<endl;
cout<<"输入三个系数:";
cin>>a>>b>>c;
n=root(a,b,c,x1,x2);
if(n==2)
cout<<"方程有两个不等实根:x1="<<x1<<",x2="<<x2<<endl;
else if(n==1)
cout<<"方程有两个相等实根:x1=x2="<<x1<<endl;
else
cout<<"方程没有实根!"<<endl;
return 0;
}
运行示例:
输入三个系数:1 3 2
方程有两个不等实根:x1=-1,x2=-2
输入三个系数:4.5 5.7 2
方程没有实根!
3.
\#include <iostream>
using namespace std;
void input(int*,int&,int);
int main()
{
int max,min;
cout<<"输入 10 个整数:";
input(&max,min,10);
cout<<"10 个整数的次大值="<<max
<<",次小值="<<min<<endl;
return 0;
}
void input(int* pSubMax,int& SubMin,int n)
{
int Max,Min;
int a;
cin>>a;
Max=Min=*pSubMax=SubMin=a;
for(int i=1;i<10;i++)
{ cin>>a;
if(a>Max)
{
*pSubMax=Max;
Max=a;
}
else if(a<Max&&a>*pSubMax)
*pSubMax=a;
if(a<Min)
{
SubMin=Min;
Min=a;
}
else if(a>Min&&a<SubMin)
SubMin=a;
}
}
运行示例:
输入 10 个整数:12 12 89 67 56 4 89 77
65 45
10 个整数的次大值=77,次小值=12
4.
\#include <iostream>
\#include <cmath>
using namespace std;
double myexp(double,double=1e-4);
int main()
{
cout<<myexp(0.5)<<endl;
return 0;
}
double myexp(double x,double precision)
{
double s=0;
int n=1;
double t=x;
while(fabs(t)>precision){
s+=t;
n++;
t*=x/n;
}
return s;
}
五、实验小结
通过本节实验课,进一步熟悉了函数的基本用法与功能,初步学会了函数的调用方法,并且掌握了用迭代法编程计算一些简单的实际问题。函数是程序的基本单元,要学好这门课就要从基本工作做起,学好每一块语言知识,慢慢总结经验,掌握更多的编程技巧。