实验2 引用与函数

一、实验目的和要求
1.熟悉引用的概念,掌握引用的定义方法,学会引用在C++程序中的应用
2.掌握函数的定义和调用方法。

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

二、实验内容

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

(1)//sy2_1.cpp
#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;
}

输出结果:




输出结果解释:该程序首先定义两个double类型的对象dd和de,并给其分别赋值为3.9和1.3,然后有定义了两个double类型的引用rdd和rde,并将其分别与dd和de相联系,这样是的dd与rdd、de与rde本质上是同一个变量用了不同的别名,所以此时无论对相联系的两个变量的任意一个做改变,另外一个也改变。综上,第一次输出的rdd+rde的值为3.9+1.3为5.2,同样的dd+de也为5.2,第二次输出的rdd和dd为重新赋值的值2.6,最后输出的rde与de为2.5.

(2)//sy2-2.cpp

#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;
}

输出结果:




输出结果解释:该程序首先定义了一个函数,并且函数内引用一个int类型的参数,然后在定义两个int类型的变量a,b作为引用对象,调用函数有n=m*4,函数fun(2,a)引用a,所以a为2*4=8,fun(3,b)引用b,b为3*4=12,所以最终输出“a+b”的值为8+12=20。

(3)//sy2_3.cpp
#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(int i=0;i<5;i++)
        cout<<aa[i]<<" ";
    cout<<endl;
    return 0;
}
int &fun(int a)
{
    return aa[a];
}


输出结果:



输出结果解释:

2.编程完成下列任务
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4.cpp)
编写程序如下:

//sy2-4.cpp
#include<iostream>
using namespace std;
int main()
{
    double F=0;
   
    cout<<"请输入华氏温度F值:"<<endl;
    cin>>F;
     double C=0;
C=(F-32)*5/9;
    cout<<"摄氏温度C为:"<<C<<endl;
    return 0;
}

输出结果:




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

编写程序如下:

//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<<"请输入3个整数:";
    cin>>a>>b>>c;
    cout<<"最大值为:"<<Max1(a,b,c)<<endl;
    double x,y,z;
    cout<<"请输入2个双精度数:";
    cin>>x>>y;
    cout<<"最大值为:"<<Max1(x,y)<<endl;
    cout<<"请输入3个双精度数:";
    cin>>x>>y>>z;
    cout<<"最大值为:"<<Max1(x,y,z)<<endl;
    return 0;
}


运行结果:



三、分析与讨论


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

答:引用的概念:

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

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

函数的定义: 函数是面向对象程序设计中对功能的抽象,通常我们将相对独立的、经常使用的功能抽象为函数。从用户使用的角度来看,C++有两种函数: 标准库函数和用尸自定义的函数。标准库函数由C++系统定义并提供给用户使用,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。

调用方法:  函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所需提供的实际参数,简称实参。函数调用的一般形式为:
    函数名(<实参表>)
其中,<实参表>中的各参数用逗号分隔,实参可以是常量、变量或表达式,与被调用函数形参的个数和类型必须相符。不管函数定义是否有参数,都可以用两种形式调用:函数语句或函数表达式。如果函数调用作为一条语句,这时函数可以没有返回值。当函数调用出现在表达式中,这时就必须有一个明确的返回值。


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

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

四、实验总结

通过本次实验我学会了引用与函数的调用,以及对函数的概念有了更进一步的了解,在学习引用和调用的过程中可以将函数将其联系在一起使用,增加很多想象力。引用即是一个变量的不同昵称,使用别称的其中一个对变量进行改变时另外一个也同时改变,本次使用中遇到一些陌生知识点,比如“双精度”这个词比较难以理解,通过查阅过后知识点还是优点模糊,但我相信在今后的学习过程中会将其学会,本次实验也学会了自己编写实验类似程序,为以后的学习提供进一步基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下关于C++中多态和虚函数实验。 首先,多态是指不同对象以不同的方式响应相同的消息的能力。在C++中,通过虚函数来实现多态。虚函数是指在基类中被声明为虚函数函数,在派生类中被重写后,在程序中使用基类指针或引用调用该函数时,会调用派生类中的函数。 下面是一个简单的多态和虚函数实验示例: ```c++ #include<iostream> using namespace std; class Shape { public: virtual void draw() { cout << "Drawing Shape" << endl; } }; class Circle: public Shape { public: void draw() { cout << "Drawing Circle" << endl; } }; class Square: public Shape { public: void draw() { cout << "Drawing Square" << endl; } }; int main() { Shape *s; Circle c; Square sq; s = &c; s->draw(); s = &sq; s->draw(); return 0; } ``` 运行结果为: ``` Drawing Circle Drawing Square ``` 在上述示例中,我们定义了一个基类Shape和两个派生类Circle和Square,分别重写了基类的虚函数draw()。在程序中,我们先定义了一个基类指针s,然后将其指向第一个派生类对象c,再调用s的虚函数draw(),此时会调用派生类Circle的draw()函数,因为指针实际上指向的是Circle类型的对象。接着,我们将指针s重新指向第二个派生类对象sq,再次调用s的虚函数draw(),此时会调用派生类Square的draw()函数。 通过这个实验,我们可以看到多态和虚函数的特性,即通过基类指针或引用调用虚函数时,会根据实际对象的类型来调用相应的派生类函数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值