第二章实验 引用与函数

一:实验目的和要求

1.熟悉引用的概念,掌握引用的定义方法,学会引用在C++程序中的应用。

2.掌握函数的定义和调用方法。

3.练习重载函数的使用。

二:实验内容

1.调试下列程序,写出输出结果,并解释输出结果。

(1)

[cpp]  view plain  copy
  1. //(1)sy2_1.cpp  
  2. #include<iostream>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.    double dd=3.9,de=1.3;  
  7.    double &rdd=dd,&rde=de;  
  8.    cout<<rdd+rde<<','<<dd+de<<endl;  
  9.    rdd=2.6;  
  10.    cout<<rdd<<','<<dd<<endl;  
  11.    de=2.5;  
  12.    cout<<rde<<','<<de<<endl;  
  13.    return 0;  
  14. }  

程序运行结果如下:


解释结果如下:

     程序分析:首先定义了一个双精度浮点型(double)dd和de,并给其赋初值3.9和1.3。然后又定义一个双精度浮点型(double)的引用rdd和rde,将它们分别与dd和de相联系。第一行和第三行输出结果rdd+rde和dd+de都为5.2是因为开始赋初值的和是5.2,“&rdd=dd,&rde=de”相当于给dd和de取一个别名。第二行输出结果都为2.6,是因为给rdd赋的初始值是2.6,所以输出rdd为2.6,dd也为2.6是因为rdd为dd的别名,它们使用同一个地址。

(2)

[cpp]  view plain  copy
  1. //(2)sy2_2.cpp  
  2. #include<iostream>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.   void fun(int,int&);  
  7.   int a,b;  
  8.   fun(2,a);  
  9.   fun(3,b);  
  10.   cout<<"a+b="<<a+b<<endl;  
  11.    return 0;  
  12. }  
  13. void fun(int m,int &n)  
  14. {  
  15.    n=m*4;  
  16.   
  17. }  

程序运行结果如下:


解释结果如下:

     从程序中可以看出,在主函数中定义了a和b并给a和b赋初值2和3。当程序调用函数void fun时,实参a和b分别初始化引用m和n,所以在函数fun中,对m和n的访问就是对a和b的访问,函数fun中改变了main函数中的对象a、b的值,就相当于a=2*4=8,b=3*4=12,所以a+b=20。

(3)

[cpp]  view plain  copy
  1. //(3)sy2_3.cpp  
  2. #include<iostream>  
  3. using namespace std;  
  4. int &fun(int);  
  5. int aa[5];  
  6. int main()  
  7. {  
  8.   int a=5;  
  9.   for(int i(0);i<5;i++)  
  10.     fun(i)=a+i;  
  11.   for(int i=0;i<5;i++)  
  12.   cout<<aa[i]<<" ";  
  13.   cout<<endl;  
  14.    return 0;  
  15. }  
  16. int &fun(int a)  
  17. {  
  18.    return aa[a];  
  19.   
  20. }  

程序运行结果如下:


输出结果解释如下:

    首先定义一个整数a并给a赋初值5,先输出a的值5,程序中用到了for循环语句和数组,每次加1,最后再输出长度为5的数组,所以最后输出结果为5,6,7,8,9。

2.编程完成下列任务。

(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)

编写程序如下:

[cpp]  view plain  copy
  1. //sy2_4.cpp  
  2. #include<iostream>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.   double F=0;  
  7.   cout<<"请输入华氏温度F值: "<<endl;  
  8.   cin>>F;  
  9.   double C=(F-32)*5/9;  
  10.   cout<<"摄氏温度为: "<<C<<endl;  
  11.       return 0;  
  12.  }  

程序运行结果如下:


(2)编写重载函数max1可分别求取2个整数、3个整数、2 个双精度数和3个双精度数的最大值。(sy2_5.cpp)

编写程序如下:

[cpp]  view plain  copy
  1. #include<iostream>  
  2. using namespace std;  
  3. int  max1(int a,int b)  
  4. {  
  5.   
  6.  if(a>b)  
  7.     return a;  
  8.  else  
  9.   return b;  
  10. }  
  11. int max1(int a,int b,int c)  
  12. {  
  13.   
  14.    return max1(a,max1(b,c));  
  15.   
  16. }  
  17. double max1(double x,double y)  
  18. {  
  19.     if(x>y)  
  20.       return x;  
  21.  else  
  22.       return y;  
  23. }  
  24. double max1(double x,double y,double z)  
  25. {  
  26.   
  27.    return max1(x,max1(y,z));  
  28.   
  29. }  
  30. int main()  
  31. {  
  32.     int a,b,c;  
  33.     cout<<"请输入两个整数:";  
  34.     cin>>a>>b;  
  35.     cout<<"最大值="<<max1(a,b)<<endl;  
  36.     cout<<"请输入三个整数:";  
  37.     cin>>a>>b>>c;  
  38.     cout<<"最大值="<<max1(a,b,c)<<endl;  
  39.     double x,y,z;  
  40.     cout<<"请输入两个双精度数:";  
  41.     cin>>x>>y;  
  42.     cout<<"最大值="<<max1(x,y)<<endl;  
  43.     cout<<"请输入三个双精度数:";  
  44.     cin>>x>>y>>z;  
  45.     cout<<"最大值="<<max1(x,y,z)<<endl;  
  46.     return 0;  
  47. }  

程序运行结果如下:


三:分析与讨论

1.总结引用的概念及用途。

  答:引用的概念:所谓引用,就是给对象取一个别名,使用该别名可以存取该对象。换句话说是使新对象和原对象共用一个地址。这样,无论对哪个对象进行修改,其实都是对同一地址的内容进行修改。因为原对象和新对象总是具有相同的值。

      引用的用途:引用的主要用途是用作函数参数和函数值的返回。

2.函数的定义和调用方法。

  答:函数的定义:从用户使用的角度来看,C++有两种函数:标准库函数和用户自定义函数。标准库函数有C++系统定义并提供给用户,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。

       函数的调用方法:函数使用时通过函数调用实现。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所提供的实际参数。函数调用的一般形式为:函数名(<实参数>),其中<实参数>中的各参数用逗号分隔,实参数可以是常量、变量或表达式,与被调用函数形参的个数和类型必须相符。

3.重载函数时通过什么来区分?

  答:编译系统将根据函数参数的类型和个数来判断使用哪一个函数。

实验小结

   通过本次实验,我们不仅要熟悉引用的概念,掌握引用的定义方法,学会引用在C++程序中的应用,还要掌握函数的定义和调用方法以及重载函数的使用。在我们编写程序的时候首先要有一个清晰的思路,然后再根据这个思路去写,可能在编写的时候会出现一些问题导致程序无法运行,这个时候我们要根据提示的错误去修改,看不懂的地方我们可以查阅资料或者问老师。还有在学习新知识的同时我们也要温习以前学过的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值