式武神

导航

c++第二次实验

1.函数重载编程练习

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

#include<iostream>
using namespace std;
struct complex
{
double real;
double imaginary;
};
int add(int, int);
double add(double,double);
complex add(complex,complex);
int main() 
{
    int a,b;
    cin>>a>>b;
    cout<<add(a,b)<<endl;
    double x,y;
    cin>>x>>y;
    cout<<add(x,y)<<endl;
    struct complex m,n,p;
    cin>>m.real>>m.imaginary>>n.real>>n.imaginary;
 p=add(m,n);
    cout<<p.real<<"+"<<p.imaginary<<"i"<<endl;
    return 0;

}
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 a;
a.real=x.real+y.real;
a.imaginary=x.imaginary+y.imaginary;
return  a;
}

2.函数模板编程练习

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

#include<iostream>
using namespace std;
template <typename T>
void quick(T a[], int x, int y)
{
    if (x >= y)
    {
        return ;
    }
    int begin = x;
    int end = y;
    T t = a[x];
    while (begin < end)
    {
        while (begin < end&&a[end] >= t)
        {
            end--;
        }
        a[begin] = a[end];
        while (begin < end&&a[begin] <= t)
        {
            begin++;
        }
        a[end] = a[begin];
    }
    a[begin] = t;
    quick(a, x, begin - 1);
    quick(a, begin + 1, y);
}
int main()
{
    int n, i;
    int a[100];
    cin >> n;
    for (i = 0; i < n; i++)
        cin >> a[i];
    quick(a, 0, n - 1);
    for (i = 0; i < n; i++)
        cout << a[i];
    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 changepasswd();
    void printinfo();
private:
    string name;
    string passwd;
    string email;
};
void user::setinfo(string name0,string passwd0,string email0)
{
    name = name0;
    passwd = passwd0;
    email = email0;
}
void user::changepasswd()
{
    string s;
    int n = 1;
    cout << "请输入原密码:";
    cin >> s;
    if (s == passwd)
    {
        string newpasswd;
        cin >> newpasswd;
        passwd = newpasswd;
    }
    while (s != passwd && n < 3)
    {
        {
            cout << "密码错误,请重新输入:";
            cin >> s;
            n++;
        }
    }
        if (n == 3)
        {
            cout << "请稍后再试."<<endl;
        }
}
void user::printinfo()
{
    cout << "name:" << name << endl;
    cout << "passwd:" << "******" << endl;
    cout << "email:" << email << endl;
}
int main()
{
    cout << "testing 1......" << endl;
    user user1;
    user1.setinfo("Leonard");
    user1.printinfo();
    user1.changepasswd();
    user1.printinfo();
    cout << endl << "testing 2......" << endl << endl;
    user user2;
    user2.setinfo("Jonny", "92197", "xyz@hotmail.com");
    user2.printinfo();
    return 0;
}

实验总结与体会

1.这次实验让我初步学会了函数重载,函数模板和类的定义,实现和使用。

2.这次实验让我认识到我还有很多东西要学,让我认识到自己有很多不足,尤其是编译快速排序的时候,刚开始完全没思路,然后去看了网上的,网上的有几步过程起初没看懂,以为是它错了,然后自己改了,发现编出来的不对,用网上的过程发现它是对的,然后我才发现是我错了。关于算法我还有许多不足,以后要多练练算法。

 

posted on 2019-03-23 22:25  式武神  阅读(181)  评论(4编辑  收藏  举报