引用与函数

原创 2018年04月16日 23:26:51
实验目的和要求

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

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


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

实验内容

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

(1)实验程序:
  1. //sy2_1.cpp    
  2.   
  3. #include<iostream>    
  4.   
  5. using namespace std;    
  6.   
  7. int main()    
  8.   
  9. {    
  10.   
  11.     double dd=3.9,de=1.3;    
  12.   
  13.     double &rdd=dd,&rde=de;    
  14.   
  15.     cout<<rdd+rde<<','<<dd+de<<endl;    
  16.   
  17.     rdd=2.6;    
  18.   
  19.     cout<<rdd<<','<<dd<<endl;    
  20.   
  21.     de=2.5;    
  22.   
  23.     cout<<rde<<','<<de<<endl;    
  24.   
  25.     return 0;    
  26.   
  27. }    
结果:
  
运行结果分析:
   首先,我们先定义一个双精度浮点型的对象dd和de,并给他们赋初始值3.9和1.3;之后又定义一个双精度浮点型的引用rdd和rde,并且将他们与dd和de相关联。这样的话无论是对dd、de、rdd和rde进行操作,都是对原来的数据单元内容进行操作,并没有改变;因此,第一列dd和de相加,rdd和rde相加的结果输出结果为5.2;第二列是rdd赋了一个初始值2.6,dd也是同样的,他们使用同一个地址。第三列是rde赋了一个初始值2.5,de也是同样的,他们使用同一个地址。

(2)实验程序:
  1. //sy2_2.cpp    
  2.   
  3. #include<iostream>    
  4.   
  5. using namespace std;    
  6.   
  7. int main()    
  8.   
  9. {    
  10.   
  11.    void fun(int,int&);    
  12.   
  13.    int a,b;    
  14.   
  15.    fun(2,a);    
  16.   
  17.    fun(3,b);    
  18.   
  19.    cout<<"a+b="<<a+b<<endl;    
  20.   
  21.     return 0;    
  22.   
  23. }    
  24.   
  25. void fun(int m,int &n)    
  26.   
  27. {    
  28.   
  29.     n=m*4;    
  30.   
  31. }    
结果:


程序结果分析 :
      在这个程序中,首先在主函数中定义了a和b,并给他们分别赋初始值2和3;当程序调用函数void fun()时,实参初始化引用了m和n,故而在函数void fun()中,对于a和b的访问相当于对m和n的访问,函数void fun()中改变了main()函数中对象a和b的值,也就是说a=2*4=8;b=3*4=12;故a+b=20。


(3)实验程序:
  1. //sy2_3.cpp    
  2.   
  3. #include<iostream>    
  4.   
  5. using namespace std;    
  6.   
  7. int &fun(int);    
  8.   
  9. int aa[5];    
  10.   
  11. int main()    
  12.   
  13. {    
  14.   
  15.    int a=5;    
  16.   
  17.    for(int i(0);i<5;i++)    
  18.   
  19.     fun(i)=a+i;    
  20.   
  21.    for(i=0; i<5; i++)    
  22.   
  23.    cout<<aa[i]<<" ";    
  24.   
  25.    cout<<endl;    
  26.   
  27.     return 0;    
  28.   
  29. }    
  30.   
  31.  int &fun(int a)    
  32.   
  33. {    
  34.   
  35.     return aa[a];    
  36.   
  37. }    


结果:
正确运行程序:
  1. //sy2_3.cpp    
  2.   
  3. #include<iostream>    
  4.   
  5. using namespace std;    
  6.   
  7. int &fun(int);    
  8.   
  9. int aa[5];    
  10.   
  11. int main()    
  12.   
  13. {    
  14.   
  15.    int a=5;    
  16.   
  17.    int i;    
  18.   
  19.    for(int i(0);i<5;i++)    
  20.   
  21.     fun(i)=a+i;    
  22.   
  23.    for(i=0; i<5; i++)    
  24.   
  25.    cout<<aa[i]<<" ";    
  26.   
  27.    cout<<endl;    
  28.   
  29.     return 0;    
  30.   
  31. }    
  32.   
  33.  int &fun(int a)    
  34.   
  35. {    
  36.   
  37.     return aa[a];    
  38.   
  39. }    

运行结果:



运行结果分析:
          在这个程序中,首先定义一个整数a,并给他赋初始值为5;先输入a的值为5,再利用for循环,根据条件(i=0;i<5;i++);通过每次的加1,进行计算,再利用数组aa[ ]输出从5开始的长度为5的数组:5、6、7、8、9。        



2、程序完成下列任务:
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。
程序:
  1. //sy2_4.cpp  
  2. #include <iostream>  
  3. using namespace std;  
  4. float Convert(float TempFer)  
  5. {  
  6. float TempCel;  
  7. TempCel=((TempFer-32)*5)/9;  
  8. return TempCel;  
  9. //函数声明  
  10. int main()  
  11. {  
  12. float TempFer;  
  13. float TempCel;  
  14. cout<<"请输入华氏温度:";  
  15. cin>>TempFer;  
  16. TempCel= Convert(TempFer); //函数调用  
  17. cout<<"\n摄氏温度为:";  
  18. cout<<TempCel<<endl;  
  19. return 0;  
  20. }  
运行结果:
(2)编写重载函数max1可分别求取2个整数、3个整数、2个双精度数和3个双精度数的最大值。
程序:
  1. #include <iostream>  
  2. using namespace std;  
  3. int Max1(int a,int b){  
  4.     if(a>b)  
  5.     return a;  
  6.     else  
  7.         return b;  
  8. }  
  9. double Max1(double x,double y){  
  10.     if(x>y)  
  11.     return x;  
  12.     else  
  13.         return y;  
  14. }  
  15. int Max1(int a,int b,int c){  
  16.     return Max1(a,Max1(b,c));  
  17. }  
  18. double Max1(double x,double y,double z){  
  19.     return Max1(x,Max1(y,z));  
  20. }  
  21.   
  22. int main(){  
  23.     int a,b,c;  
  24.     cout<<"请输入两个整数:";  
  25.     cin>>a>>b;  
  26.     cout<<"结果是:"<<Max1(a,b)<<endl;  
  27.   
  28.     cout<<"请输入三个整数:";  
  29.     cin>>a>>b>>c;  
  30.     cout<<"结果是:"<<Max1(a,b,c)<<endl;  
  31.   
  32.     double x,y,z;  
  33.     cout<<"请输入两个双精度数:";  
  34.     cin>>x>>y;  
  35.     cout<<"结果是:"<<Max1(x,y)<<endl;  
  36.   
  37.     cout<<"请输入三个双精度数:";  
  38.     cin>>x>>y>>z;  
  39.     cout<<"结果是:"<<Max1(x,y,z)<<endl;  
  40.   
  41. return 0;  
  42. }  

运行结果:

分析与讨论
1、总结引用的概念及用途。
 答:就是给对象取一个别名,使用该别名可以存取该对象。换句话说,是使新对象和原对象共用一个地址。
     用途:用作函数参数和函数的返回值。
2、函数定义和调用方法。
答:函数定义:C++的函数分为:标准库函数和用户自定义函数。标准库函数由C++系统定义并提供给用户使用,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。
调用方法:函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所需提供的实际参数,简称实参。不管函数定义是否有参数,都可以用两种形式调用:函数语句或函数表达式;如果函数调用作为一条语句,这是函数可以没有返回值;当函数调用出现在表达式中,这时就必须有一个返回值。
3、重载函数时通过什么来区分?
答:区分重载方法的依据在于这些方法具有不同的方法特征。所谓方法特征是指方法的参数的数量、顺序和类型。不同的方法特征指参数的数量、顺序和类型至少有一个不相同。

Java的引用和函数参数传递

  • 2018年03月17日 20:01
  • 17KB
  • 下载

引用和结构

  • 2014年08月03日 17:23
  • 885KB
  • 下载

函数中高级

  • 2013年12月06日 17:45
  • 301KB
  • 下载

“引用作为函数参数”与 “引用作为函数返回值”

“引用作为函数参数”与 “引用作为函数返回值” 一、引用作为函数参数 作为函数参数时引用有两种原因: 1、在函数内部会对此参数进行修改 2、提高函数调用和运行效率   关于第一点,都知道C...
  • u012273127
  • u012273127
  • 2016-09-06 09:07:28
  • 2200

Perl--函数引用

函数的引用: $ref=\&func; (func的定义在其他位置),不要(),当\&func()时为执行函数,返回值再引用。 当\&func()时为执行函数,返回值再引用。 [o...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2014-12-16 21:01:14
  • 972

perl函数中的传引用用法

perl中的是如何在函数中使用引用参数的。有时不想返回数组或者其他形式,希望直接修改函数的参数的实例的具体的值,作为返回,就C中的传递引用参数一样。 这样在perl中是怎么写的呢? 查了一下文档,pe...
  • mydriverc2
  • mydriverc2
  • 2013-11-20 16:37:48
  • 1388

error:尝试引用已删除的函数或已显式删除函数

很基础的操作在重载运算符的时候,尤其是运算符重载,我们也许会遇到这个问题,一般情况下就是函数的声明没有写好,如这样的声明:friend std::ostream operator...
  • qq_37193603
  • qq_37193603
  • 2017-06-06 23:06:29
  • 1491

该符号在函数 _main 中被引用

该符号在函数 _main 中被引用 今天上午的错误终于搞明白了,原来我在建立win32 控制台工程的时候 选用了visual2005的默认设置,这样就使得项目的附加选项中选择了【预编译头】选项,改选成...
  • WuOu
  • WuOu
  • 2009-10-19 19:06:00
  • 6078

C++ 引用与引用作为函数的参数

对一个数据建立一个“引用”,他的作用是为一个变量起一个别名。这是C++对C语言的一个重要补充。...
  • chaipp0607
  • chaipp0607
  • 2017-03-05 15:49:20
  • 7867

[谭科]Excel函数视频课程(第1季)-初级

包含:Excel函数基础、求和函数、计数函数、条件求和函数、查找引用函数、文本函数、日期函数、数据库函数等。
  • 2015年05月06日 15:32
收藏助手
不良信息举报
您举报文章:引用与函数
举报原因:
原因补充:

(最多只允许输入30个字)