zoukankan      html  css  js  c++  java
  • 实验二

     编程练习:

    1、函数重载编程练习

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

    #include <iostream>
    using namespace std;
    struct complex{
    double real;
    double imaginary;
    };
    int add(int x,int y)
    { return x+y;
    }
    double add(double x,double y)
    {return x+y;
    }
    complex add(complex x,complex y)
    { complex s;
      s.real=x.real+y.real;
      s.imaginary=x.imaginary+y.imaginary;
    return s;
    }
    int main(){
        int a1=1,b1=2,c1;
        double a2=1.5,b2=2.1,c2;
        complex a3={2.1,3},b3={1.5,2},c3;
        c1=add(a1,b1);
        c2=add(a2,b2);
        c3=add(a3,b3);
        cout<<"1+2="<<c1<<endl;
        cout<<"1.5+2.1="<<c2<<endl;
        cout<<"2.1+3i + 1.5+2i="<<c3.real<<"+"<<c3.imaginary<<"i"<<endl;
        return 0;
    }

     运行截图:

    2、函数模板编程练习

    编写实现快速排序函数模板,并在main()函数中,定义不同类型数据,调用测试。(算法可参考这里, 内有排序示意图及算法逻辑) 

    #include<iostream>
    using namespace std;
    template<typename T>
    void QuickSort(T a[],int left,int right)
    {
        if(left<right)
        {
            int q=left;
            int h=right;
            T array=a[q]; 
            while(q<h)
              {while(q<h&&a[h]>array)h--; 
               if(q<h)
                 { 
                   a[q]=a[h];
                   q++;
                 } 
               while(q<h&&a[q]<array)q++;
               if(q<h)
                {
                   a[h]=a[q];
                   h--; 
                 }
              }
            a[q]=array;
            QuickSort(a,left,q-1);
            QuickSort(a,q+1,right);
        }
    }
    int main()
    {
        int i;
        int a[10]={5,15,4,38,54,69,25,3,6,9};
        cout<<"a[10]={5,15,4,38,54,69,25,3,6,9}"<<endl;
        QuickSort(a,0,9);
        cout<<"排序后:"<<endl;
        for(i=0;i<10;i++)
        cout<<a[i]<<ends;
        cout<<endl;
        float b[10]={5.6,8.9,3.4,9.8,8.6,8.4,9.2,1.0,5,12.5};
        cout<<"b[10]={5.6,8.9,3.4,9.8,8.6,8.4,9.2,1.0,5,12.5}"<<endl;
        cout<<"排序后:"<<endl;
        QuickSort(b,0,9);
        for(i=0;i<10;i++)
        cout<<b[i]<<ends;
        return 0;
    }

    运行截图:

    3、类的定义、实现和使用编程练习 

    设计并实现一个用户类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 passwd0="111111",string email0="  ");
           void printinfo();
           void changepasswd();
        private:
           string name;
           string passwd;
           string email;    
    };
    
     void user::setinfo(string name0,string passwd0,string email0){
         name=name0;
         passwd=passwd0;
         email=email0;      
     }
    
     void user::printinfo(){
         cout<<"name:  "<<name<<endl;
         cout<<"passwd:"<<"******"<<endl;
         cout<<"email: "<<email<<endl;
         
     }
     void user::changepasswd(){
         cout<<"please enter the old passward:";
         int n=3;
         string passwd1;
         while(n--){
             
             cin>>passwd1;
             if(passwd1==passwd)break;
             else
             cout<<"passwd input error,please re-enter again:";
         }
         if(!n)cout<<"please try after a while.";
         
         
     }
     int main(){
         cout<<"testing 1..."<<endl;
         user user1;
         user1.setinfo("Leonard");
         user1.printinfo();
        user1.changepasswd();
        user1.printinfo();
        cout<<endl; 
        cout<<"testing 2..."<<endl;
        user user2;
        user2.setinfo("Jonny","92197","xyz@hotmail.com");
        user2.printinfo();  
        return 0;
         
     }

    运行截图:

     实验总结体会:

     快速查找通过学习其他同学的程序和自己的推演,完成自己的代码并做了一点更改,能达到预想效果;类的使用中,写成员函数时总会出现或大或小的问题,在这一部分耗时较多,设置默认值也出现错误,在程序中想要实现输入密码以*显示,经查找需要用到getch()语句和其对应的头文件,尝试后程序出现不少问题。

  • 相关阅读:
    RPC、HTTP、IDL
    秋招拿了7个offer,分享一些反思和经验
    “功能测试”到“测试开发”升级之路
    Github最全买房租房攻略,火了!
    王垠:怎样尊重一个程序员?
    为什么曾经优秀的人突然变得平庸?
    你这么努力,为什么能力提升还这么慢?
    打工人到什么状态,就可以离职了?
    怎样才能迅速晋升?
    如何做个优秀的经理?
  • 原文地址:https://www.cnblogs.com/zxz2425405395/p/10558646.html
Copyright © 2011-2022 走看看