第二次实验

原创 2018年04月17日 18:06:41
 实验目的和要求
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++的掌握还有许多的不足,希望在之后的学习中能有所提高。


清华大学高等数值分析第二次上机实验作业

  • 2015年02月15日 12:45
  • 569KB
  • 下载

南京邮电大学JAVA第二次课程实验

  • 2016年04月20日 21:53
  • 232KB
  • 下载

编译原理第二次试验

实验目的写出算符优先分析器。理解自底向上的编译方法的运用。采用算符优先分析法对表达式进行分析,并给出四元式。实验步骤1.找出优先关系矩阵2.在代码中表示出优先关系矩阵3.通过逐个扫描输入的字符串,进行...
  • zwx19961130
  • zwx19961130
  • 2017-12-16 17:25:11
  • 57

数据库第二次实验要求

第二次实验内容实验名称:数据库的查询和更新操作实验要求:要求学生掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解,熟练掌握简单表的数据查询、更新...
  • laoduan_78
  • laoduan_78
  • 2015-04-02 23:50:00
  • 1390

山东大学JAVA实验所有代码

  • 2012年01月21日 19:25
  • 1.85MB
  • 下载

java第二次试验

  • 2012年12月02日 10:56
  • 59KB
  • 下载

实验八,指针报告(第二次)

实验二、指针与数组一、实验目的1、 理解指针和数组间的关系。2、 掌握通过指针操作数组元素的方法。3、 掌握数组名作为函数参数的编程方式。二、实验内容1、 完成教材实验八剩余部分。2、 用指针实现数组...
  • qq_40721948
  • qq_40721948
  • 2018-04-17 20:36:43
  • 15

我的第二次实验命令:

第二次实验命令: Man手册(用法) 打开man手册  (man + 命令,如:# man touch) 退出man手册  (# q ) Group001 # ls  # ls –l  #...
  • SupeVip
  • SupeVip
  • 2017-04-19 22:10:55
  • 76

C++ 第二次上机实验(作业)

T1      定义 class Time :            代码: #include using namespace std; class Time { public: void se...
  • Guo2557936113
  • Guo2557936113
  • 2016-03-27 18:02:21
  • 374

数据结构上机实验:单链表操作

#include #include using namespace std; typedef struct Node { char c; struct Node *next; }...
  • sr19930829
  • sr19930829
  • 2014-03-19 21:02:18
  • 2071
收藏助手
不良信息举报
您举报文章:第二次实验
举报原因:
原因补充:

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