码迷,mamicode.com
首页 > 其他好文 > 详细

cpp实验二

时间:2019-03-24 23:16:06      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:pre   ++   image   hot   取出   提示   count   hotmail   turn   

1.函数重载编程练习

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

#include<iostream>
using namespace std;
struct Complex {
    double real;
    double imaginary;
};

int add(int a, int b)
{
    return a + b;
}
double add(double a, double b)
{
    return a + b;
}
Complex add(Complex a, Complex b)
{
    Complex i;
    i.real = a.real + b.real;
    i.imaginary = a.imaginary + b.imaginary;
    return i;
};
int main() {
    int m, n;
    cout << "Enter two integer:";
    cin >> m >> n;
    cout << "Their sum:" << add(m, n) << endl;

    double x, y;
    cout << "Enter two real number:";
    cin >> x >> y;
    cout << "Their sum:" << add(x, y) << endl;

    Complex a, b, c;
    cout << "Enter two complex unmber:";
    cin >> a.real >> a.imaginary;
    cin >> b.real >> b.imaginary;
    c = add(a, b);
    cout << "Their sum:" << c.real << "+" << c.imaginary << "i" << endl;
    return 0;
}

技术图片

2.函数模板编程练习

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

#include<iostream>
using namespace std;
void QS(int a[], int, int);
int main()
{
    int a[] = { 132,23,56,818,648,65,21,35,64,8 }, k;
    int n = 10;
    cout << "Before sort:" << endl;
    for (k = 0; k < n; k++)
        cout << a[k] << ",";
    cout << endl;
    QS(a, 0, n - 1);
    cout << "After sort:" << endl;
    for (k = 0; k < n; k++)
        cout << a[k] << ",";
    cout << endl;
    return 0;
}

void QS(int s[], int left, int right)
{
    if (left < right)
    {
        int i = left, j = right, x = s[left];//取出数组中第一个数
        while (i < j)
        {
            while (i < j && s[j] >= x) // 从右侧找第一个小于x的数
                j--;
            if (i < j)
                s[i++] = s[j];
            while (i < j && s[i] < x) // 从左侧找第一个大于等于x的数
                i++;
            if (i < j)
                s[j--] = s[i];
        }
        s[i] = x;
        QS(s, left, i - 1); // 数组中的数依次排序
        QS(s, i + 1, right);
    }
}

技术图片

快速排序的关键就是从左侧和右侧找比原数大或者小的数,并且交换。

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

#include <iostream>
#include <string> 
using namespace std;

// User类的声明 
class User {
public:
    User() :name(""), passwd(""), email("") {};
    
    void setInfo(string name, string password = "111111", string email = "");

    //×××(补足代码) 
    // 声明带有默认形参值的成员函数setInfo()        
    // 密码默认值为6个1                             
    // 邮箱默认值为空串         
    void changePasswd();
    void printInfo();
private:
    string name;
    string passwd;
    string email;
};
// User类的实现
void User::setInfo(string name0, string password0, string email0)
{
    name = name0;
    passwd = password0;
    email = email0;
}
// 成员函数setInfo()的实现 
void User::changePasswd()
{
    int count = 1;
    string passwd1;
    string newpasswd;
    cout << "the old password:";
    cin >> passwd1;
    while (passwd1 != "111111"&&count <=

 3)
    {
        count++;
        cout << "请重新输入";
        cin >> passwd1;
    }
    if (count > 3)
    {
        cout << "plesae try later" << endl;
    }
    else
    {
        
        cout << "Enter new password:"<<newpasswd;
        cin >> newpasswd;
        cout << "the password is changed successfully" << endl;
        passwd = newpasswd;
    }
}// 功能:设置用户名(name), 密码(passwd), 联系邮箱(email) 
// 成员函数changePasswd()的实现 
// 功能:修改密码 
// 要求:在修改密码前,要求先输入旧密码,验证无误后,才允许修改。 
// 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。 
// 补足代码 
void User::printInfo()
{
    cout << "name: " << name << endl;
    cout << "password: " << "******" << endl;
    cout << "email: " << email << endl;
}

// 成员函数printInfo()的实现 
// 功能:打印用户信息 
// 要求: 密码以6个*显示 
// 补足代码 
// ×××基础实现版预期运行结果截图:(实际编写后,请修改main()中对象实例测试)


// 在主函数中测试User类 
// 用User类创建对象,测试类的功能 
int main() {
    cout << "testing 1......" << endl;
    // 测试1    
    User user1;
    user1.setInfo("Leonard");
    user1.printInfo();
    user1.changePasswd();
    user1.printInfo();

    cout << endl << "testing 2......" << endl << endl;
    // 测试2     
    User user2;
    user2.setInfo("Jonny", "92197", "xyz@hotmail.com");
    user2.printInfo();
    return 0;
}

技术图片

 

cpp实验二

标签:pre   ++   image   hot   取出   提示   count   hotmail   turn   

原文地址:https://www.cnblogs.com/ggwdcs/p/10591201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!