一、实验目的和要求
1.熟悉引用的概念,掌握引用的定义和方法,学会引用在C++程序中的应用。
2.掌握函数的定义和调用方法。
3.练习重载函数的使用。
二、实验内容
1.调试下列程序,写出输出结果,并解释输出结果
(1)
//sy2_1.cpp
#include<iostream>
using namespace std;
int main()
{
double dd=3.9,de=1.3;
double &rdd=dd,&rde=de;
cout<<rdd+rde<<','<<dd+de<<endl;
rdd=2.6;
cout<<rdd<<','<<dd<<endl;
de=2.5;
cout<<rde<<','<<de<<endl;
return 0;
}
运行结果如下:
结果分析如下:
首先,程序定义了两个对象dd和de并赋值3.9和1.3,然后又定义了两个引用rdd和rde,这样,无论对rdd和rde进行操作时,都是对同一地址的内容进行修改。所以,rdd+rde=dd+de=5.2;当rdd=2.6时,rdd=dd=2.6;当de=2.5时,rde=de=2.5
(2)
//sy2_2.cpp
#include<iostream>
using namespace std;
int main()
{
void fun(int,int&);
int a,b;
fun(2,a);
fun(3,b);
cout<<"a+b="<<a+b<<endl;
return 0;
}
void fun(int m,int &n)
{
n=m*4;
}
运行结果如下:
(3)
#include<iostream>
using namespace std;
int &fun(int);
int aa[5];
int main()
{
int a=5;
for(int i(0);i<5;i++)
fun(i)=a+i;
for(int i=0;i<5;i++)
cout<<aa[i]<<" ";
cout<<endl;
return 0;
}
int &fun(int a)
{
return aa[a];
}
运行结果如下:
2.编程完成下列任务
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)
编写程序如下:
#include<iostream>
using namespace std;
int main()
{
double F;
cout<<"F=";
cin>>F;
double C=(F-32)*5/9;
cout<<"C="<<C<<endl;
return 0;
}
运行结果如下:
(2)编写重载函数max1可分别求取2个整数、3个整数、2个双精度数和3个双精度数的最大值。(sy2_5.cpp)
编写程序如下:
#include<iostream>
using namespace std;
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int max(int a,int b,int c)
{
return max(a,(max(b,c)));
}
double max(double q,double w)
{
if(q>w)
return q;
else
return w;
}
double max(double q,double w,double e)
{
return max(q,(max(w,e)));
}
int main()
{
int a,b,c;
cout<<"输入两个整数:";
cin>>a>>b;
cout<<"2个整数中最大整数是:"<<max(a,b)<<endl;
cout<<"输入三个整数:";
cin>>a>>b>>c;
cout<<"3个整数中最大整数是:"<<max(a,b,c)<<endl;
double q,w,e;
cout<<"输入两个双精度数:";
cin>>q>>w;
cout<<"2个双精度中最大双精度数是:"<<max(q,w)<<endl;
cout<<"输入三个双精度数:";
cin>>q>>w>>e;
cout<<"3个双精度中最大双精度数是:"<< max(q,w,e)<<endl;
return 0;
}
运行结果如下:
分析与讨论
1.总结引用的概念及用途。
答:
概念:给对象取一个别名,使用该别名可以存取该对象;
用途:用作函数参数和函数的返回值。
2.函数的定义和调用方法。
答:
定义:C++有两种函数:标准库函数和自定义函数。标准库函数由C++系统定义并提供给用户使用,可以看作对语言功能的扩充;用户根据特定任务编写的函数称为自定义函数;
方法:函数调用指定了被调用函数的名字和调用函数所需的信息,调用函数所需提供的实际参数,简称实参。
3.重载函数时通过什么来区分?
答:编译系统是将根据函数参数的类型和个数来判断使用哪一个函数。
四、实验总结