第二次实验

 实验目的和要求
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;     
 cout<<rde<<','<<de<<endl;     
 return 0;
  }  
运行结果:

运行结果分析:
   首先,我们先定义一个双精度浮点型的对象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)实验程序:
#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;  }  
运行结果:

 

程序结果分析 :
      在这个程序中,首先在主函数中定义了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)实验程序:
 #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];  
}  

错误结果:

正确运行程序:
 #include<iostream>  

using namespace std; 
 int &fun(int); 
 int aa[5];  
int main() 
 {     
int a=5;     
int i;     
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]; 
 }  


运行结果:

 

运行结果分析:
          在这个程序中,首先定义一个整数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。
程序:
 #include <iostream>
  using namespace std;
  float Convert(float TempFer)  
{  
float TempCel;  T
empCel=((TempFer-32)*5)/9;  
return TempCel; 
 } //函数声明
int main()  
 float TempFer;  
float TempCel;  
cout<<"请输入华氏温度:"; 
 cin>>TempFer;  
TempCel= Convert(TempFer); //函数调用  
cout<<"\n摄氏温度为:";  
cout<<TempCel<<endl;
  return 0;
  }  

运行结果:

 

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

程序:

 #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、总结引用的概念及用途。

 答:就是给对象取一个别名,使用该别名可以存取该对象。换句话说,是使新对象和原对象共用一个地址。

     用途:用作函数参数和函数的返回值。

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

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

调用方法:函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所需提供的实际参数,简称实参。不管函数定义是否有参数,都可以用两种形式调用:函数语句或函数表达式;如果函数调用作为一条语句,这是函数可以没有返回值;当函数调用出现在表达式中,这时就必须有一个返回值。

3、重载函数时通过什么来区分?
答:区分重载方法的依据在于这些方法具有不同的方法特征。所谓方法特征是指方法的参数的数量、顺序和类型。不同的方法特征指参数的数量、顺序和类型至少有一个不相同。

实验小结:

    通过本次实验的操作,我熟悉了引用的概念并掌握了引用的定义方法,其次也学会引用在C++程序中的应用。同时还掌握函数的定义和调用方法以及练习重载函数的使用。在这个过程中,我们尝试着对程序进行了解读和分析,在此过程中收获了很多的知识和应用,也在其中找到了自己的对于C++的掌握还有许多的不足,在之后的学习中能有所提高。



分析与讨论

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

 答:就是给对象取一个别名,使用该别名可以存取该对象。换句话说,是使新对象和原对象共用一个地址。

     用途:用作函数参数和函数的返回值。

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

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

调用方法:函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所需提供的实际参数,简称实参。不管函数定义是否有参数,都可以用两种形式调用:函数语句或函数表达式;如果函数调用作为一条语句,这是函数可以没有返回值;当函数调用出现在表达式中,这时就必须有一个返回值。

3、重载函数时通过什么来区分?
答:区分重载方法的依据在于这些方法具有不同的方法特征。所谓方法特征是指方法的参数的数量、顺序和类型。不同的方法特征指参数的数量、顺序和类型至少有一个不相同。

实验小结:

    本次实验后,我熟悉了引用的概念并掌握了引用的定义方法,其次也学会引用在C++程序中的应用。同时还掌握函数的定义和调用方法以及练习重载函数的使用。在这个过程中,我们尝试着对程序进行了解读和分析,在此过程中收获了很多的知识和应用,也在其中找到了自己的对于C++的掌握还有许多的不足,希望在之后的学习中能有所提高。


阅读更多
上一篇第二章习题
下一篇第三次实验
想对作者说点什么? 我来说一句

java第二次试验

2012年12月02日 59KB 下载

自控原理实验2

2014年05月11日 539KB 下载

嵌入式实验

2013年06月07日 3.53MB 下载

信息论实验

2012年12月19日 63KB 下载

哈工大编译原理实验二语法分析

2017年11月19日 901KB 下载

产生式系统的推理

2012年10月14日 131KB 下载

嵌入式实验第二次作业

2010年04月05日 1KB 下载

没有更多推荐了,返回首页

关闭
关闭