文档章节

实验2:函数重载、函数模板、简单类的定义和实现

o
 osc_y8yehimr
发布于 2019/03/20 20:51
字数 958
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一、函数重载编程练习 编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型 数据,调用测试。

实验代码

#include<iostream> 
using namespace std;
struct Complex{
    double real;
    double imagnary;
};
int add(int A1,int B1);
double add(double A2,double B2);
Complex add(Complex A3,Complex B3);
int main()
{
    int a1,b1;
    cout<<"please enter the int number"<<":";
    cin>>a1>>b1;
    double a2,b2;
    cout<<"please enter the double number"<<":";
    cin>>a2>>b2;
    Complex a3,b3; 
    cout<<"please enter the complex number"<<":";
    cin>>a3.real>>a3.imagnary>>b3.real>>b3.imagnary;
    add(a1,b1);
    add(a2,b2);
    add(a3,b3);
}
int add(int A1,int B1)
{
    cout<<A1+B1<<endl;
}
double add(double A2,double B2)
{
    cout<<A2+B2<<endl;
}
Complex add(Complex A3,Complex B3)
{
    cout<<A3.real+B3.real<<'+'<<A3.imagnary+B3.imagnary<<'i'<<endl;
}

运行截图

二、函数模板编程练习 编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。

实验代码

mian函数

#include<iostream>
using namespace std;
#include"InsertSort.h"
#include"output.h"
int main()
{
    int a[5]={3,2,6,8,7};
    double b[5]={4.4,8.8,7.7,1.1,9.9};
    
    InsertSort(a,0,4);
    output(a,5);
    cout<<endl;
    InsertSort(b,0,4);
    output(b,5);
    return 0;
 }

排序函数

#ifndef INSERTSORT_H
#define INSERTSORT_H
using namespace std;
template<class T>
  void InsertSort(T s[],int l,int r)
  {
      if(l<r)
      {
          int i,j;
          T x;
          i=l,j=r,x=s[l];
          while(i<j)
          {
              while(i<j&&s[j]>=x)
              j--;
              if(i<j)
              s[i++]=s[j];
              while(i<j&&s[i]<=x)
              i++;
              if(i<j)
              s[j--]=s[i];
        }
    s[i]=x;
    InsertSort(s,l,i-1);
    InsertSort(s,i+1,r);
    }
  }
  #endif

输出函数

#ifndef OUTPUT_H
#define OUTPUT_H
#include<iostream>
using namespace std;

template<class T>
void output(T s[],int n)
{
    cout<<"number after sorting is"<<":"; 
    int i;
    for(i=0;i<n;i++)
    cout<<s[i]<<" ";
    cout<<endl;
}
#endif

运行截图

类的定义、实现和使用编程练习 设计并实现一个用户类User,并在主函数中使用和测试这个类。具体要求如下: 每一个用户有用户名(name), 密码(passwd),联系邮箱(email)三个属性。 支持设置用户信息setInfo()。允许设置信息时密码默认为6个1,联系邮箱默认为空串。 支持打印用户信息printInfo()。打印用户名、密码、联系邮箱。其中,密码以6个*方式显示。 支持修改密码changePasswd(),。在修改密码前,要求先输入旧密码,验证无误后,才允许修改。 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。 在main()函数中创建User类实例,测试User类的各项操作(设置用户信息,修改密码,打印用户信息)

实验代码

#include<iostream>
#include<string>
using namespace std;
class user{
    public:
        void setInfo(string name0,string password0="111111",string email0=" ");
        void changePassword();
        void printInfo();
    private:
    string name;
    string password;
    string email;
};
int main()
{
    cout<<"testing 1...."<<endl;
    user user1;
    user1.setInfo("Leonard");
    user1.printInfo();
    user1.changePassword();
    user1.printInfo();
    cout<<"testing 2...."<<endl;
    user user2;
    user2.setInfo("jonny","92197","xyz@hotmail.com");
    user2.printInfo();
}
void user::setInfo(string name0,string password0,string email0)
{
    name=name0;
    password=password0;
    email=email0;
}
void user::printInfo()
{
    cout<<"name is"<<":"<<name<<endl;
    cout<<"password is"<<":"<<"******"<<endl;
    cout<<"email is"<<":"<<email<<endl;
}
void user::changePassword()
{
    string oldpassword;
    cout<<"Please enter your old password"<<":";
    cin>>oldpassword;
    int i=1;
    while(oldpassword!=password&&i<3)
    {
        cout<<"wrong!!please continue cin"<<":";
        cin>>oldpassword;
        i++;
    }
    if(i>=3)
    {
        cout<<"Please try latter"<<endl;
    }
    if(oldpassword==password)
    {
    string newpassword;
    cout<<"Please enter your new password"<<":";
    cin>>newpassword;
    password=newpassword;
    }
    
}

运行截图

实验总结

1.c语言中对不同类型的数据进行相同的操作需要定义名称完全不同的函数,函数重载的出现大大提高了效率,更加的人性化。类、函数模板有着异曲同工之妙。

2.编写诸如快速排序之类的函数关键在于理解算法,其次再转化成语言进行实现。    

3.在带默认形参值的函数中,要注意避免在同一个函数的多个声明中对同一个参数的默认值重复定义。

实验二点评网址:

https://www.cnblogs.com/jackyayue/p/10589584.html

https://www.cnblogs.com/q-z-y-0732/p/10597285.html

https://www.cnblogs.com/ggwdcs/p/10591201.html

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
实验2:函数重载、函数模板、简单类的定义和实现

实验目的 1. 掌握c++中函数的声明、定义、调用和参数传递方式 2. 掌握c++中带有默认形参值的函数声明和定义方法 3. 理解函数重载,掌握c++中函数重载的实现方式 4. 理解函数模板,掌握c++中函...

osc_ejr8erbt
2019/03/24
2
0
C++实验二——函数重载、函数模板、简单类的定义和实现

一、实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法。在main函数中定义不同类型的数据,调用测试。 代码实现: 先是简单的体验函数重...

osc_tvqwfyak
2019/03/19
2
0
实验二:函数重载,模板,简单类的定义和实现

【实验结论】 #函数重载 编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型 数据,调用测试。 #include<iostream>using namespace std;struct c...

osc_ejr8erbt
2019/03/23
7
0
C++中类模板的深入理解

1,多参数类模板:  1,类模板可以定义任意多个不同的类型参数;   1,代码示例: 1 template <typename T1, typename T2>2 class Test3 {4 public:5 void add(T1 a, T2 a);6 };78 Test<......

osc_k5dg06i6
2019/05/24
0
0
实验二:函数重载、模板、简单类的定义和实现

【实验结论】 #函数重载 编写重载函数add(),实现对int型,double型,Complex型数据的加法。在main()函数中定义不同类型 数据,调用测试。 #include<iostream>using namespace std;struct C...

osc_fmg49rzg
2019/03/20
10
0

没有更多内容

加载失败,请刷新页面

加载更多

敖丙20 张图揭开内存管理的迷雾

前言 之前有不少读者跟我反馈,能不能写图解操作系统? 既然那么多读者想看,我最近就在疯狂的复习操作系统的知识。 操作系统确实是比较难啃的一门课,至少我认为比计算机网络难太多了,但它...

敖丙
07/02
0
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
0
0
我是一个线程(第一人称)

来源 | 转自 码农翻身 作者 | 刘欣 全文总共 | 4600 字 预计阅读时间 | 12 分钟 第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了...

geniusian
2019/11/04
0
0
SkyWalking 权限认证

版本:7.0.0 描述 为了数据传输安全,确保网络连接是安全的。采用 Token 认证确保采集的应用数据是被信任的。 当前版本,仅支持简单的字符串 Token 配置 代理端配置文件agent.config设置 # ...

zm123321
20分钟前
17
0
是否允许实体正文进行HTTP DELETE请求? - Is an entity body allowed for an HTTP DELETE request?

问题: When issuing an HTTP DELETE request, the request URI should completely identify the resource to delete. 发出HTTP DELETE请求时,请求URI应该完全标识要删除的资源。 However,......

javail
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部