一、实验目的和要求
1、熟悉引用的概念,掌握引用的定义方法,学会引用在C++程序中的应用。
2、掌握函数的定义和调用方法。
3、练习重载函数的使用。
二、实验内容
1、调试下列程序,写出输出结果,并解释输出结果。
(1)
#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;
return 0;
}
解释输出结果:
首先定义double类型的对象分别为dd和de,并分别给它们赋初始值3.9和1.3。然后又定义double类型的引用rdd和dd联系,rde和de联系。所以无论是对rdd,rde还是dd和de进行操作,都是对原来放着数据的物理单元内容进行操作。因此5.2分别是rdd和rde,dd和de相加后输出的结果;2.6分别是对rdd赋值2.6后rdd和dd所指向的值;2.5分别是对rdd赋值2.5后rde和de所指向的值。
- #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(i=0;i<5;i++)
- cout<<aa[i]<<" ";
- cout<<endl;
- return 0;
- }
- int &fun(int a)
- {
- return aa[a];
- }
解释输出结果:
定义一个长度为5的整形数组aa[],定义一个int类型的对象a,并给它赋初始值5 。由于函数fun()的引用,输出从5开始的长度为5的数组aa[]:5 6 7 8 9 。
2、编程完成下列任务。
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)
- #include<iostream>
- using namespace std;
- void main()
- {
- double f,c;
- cout<<"请输入华氏温度:";
- cin>>f;
- c=(f-32)*5/9;
- cout<<"摄氏温度为:"<<c<<endl;
- }
(2)编写重载函数maxl可分别求取2个整数、3个整数、2个双精度数和3个双精度数的最大值。(sy2_5.cpp)
- #include <iostream>
- using namespace std;
- int max1(int a,int b)
- {
- if(a>b)
- return a;
- else
- return b;
- }
- double max1(double x,double y)
- {
- if(x>y)
- return x;
- else
- return y;
- }
- int max1(int a,int b,int c)
- {
- return max1(a,max1(b,c));
- }
- double max1(double x,double y,double z)
- {
- return max1(x,max1(y,z));
- }
- int main()
- {
- int a,b,c;
- cout<<"请输入两个整数:";
- cin>>a>>b;
- cout<<"最大值:"<<max1(a,b)<<endl;
- cout<<"请输入三个整数:";
- cin>>a>>b>>c;
- cout<<"最大值:"<<max1(a,b,c)<<endl;
- double x,y,z;
- cout<<"请输入两个双精度数:";
- cin>>x>>y;
- cout<<"最大值:"<<max1(x,y)<<endl;
- cout<<"请输入三个双精度数:";
- cin>>x>>y>>z;
- cout<<"最大值:"<<max1(x,y,z)<<endl;
- return 0;
- }
三、分析与讨论
1、总结引用的概念及用途。
答:所谓引用就是给对象取一个别名,使用该别名可以存取该对象。换句话说,是使新对象和原对象共用一个地址。这样,无论对哪个对象进行修改,其实都是对同一地址的内容进行修改。因而对原对象和新对象总是具有相同的值。在c++程序中,引用的主要用途是用作函数参数和函数的返回值。
2、函数的定义和调用方法。
答:c++有两种函数:标准库函数和用户定义的函数。标准库函数由c++系统定义并提供给用户使用,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所需提供的实际参数,简称实参。不管函数定义是否有参数,都可以用两种形式调用:函数语句或函数表达式。如果函数调用作为一条语句,这时函数可以没有返回值。当函数调用出现在表达式中,这时就必须有一个明确的返回值。
3、重载函数时通过什么来区分?
答:重载函数通常用来对具有相似行为而数据类型或数据个数不同的操作提供一个通用的名称。编译系统将根据函数参数的类型和个数来判断使用哪一个函数。c++要求重载的函数具有不同的签名。函数签名包括:函数名,参数的个数、数据类型和顺序。
四、实验小结
通过本次实验熟悉了引用的概念,学习了引用的定义方法,学会了引用在c++程序中的应用。学习了函数的定义和调用方法。练习了重载函数的使用。
输出结果: