c++实验二

c++实验二

第一题:

源代码:

#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()
{
    Complex c={3,5};
    Complex d={1,2};
    Complex sum=add(c,d);
    cout<<"Their sum:"<<add(1,2)<<endl;
    cout<<"Their sum:"<<add(1.2,4.0)<<endl;
    cout<<"他们和的实部和虚部分别为:"<<sum.real<<","<<sum.imaginary<<endl;
    return 0;
}
int add(int c,int d)
{
    return c+d;
}
double add(double c,double d)
{
    return c+d;
}
Complex add(Complex c,Complex d)
{
    Complex sum;
    sum.real=c.real+d.real;
    sum.imaginary=c.imaginary+d.imaginary;
    return sum;
}

运行结果:

第三题:

源代码:

#include <iostream>
#include <string>
using namespace std;
// User类的声明
class User {
public:
void setInfo(string name1,string passwd1="111111",string email1="");
void changePasswd();
void printInfo();
private:
string name;
string passwd;
string email;
};
// User类的实现
// 成员函数setInfo()的实现
// 功能:设置用户名(name), 密码(passwd), 联系邮箱(email)
void User::setInfo(string name1,string passwd1,string email1)
{
    name=name1;
    passwd=passwd1;
    email=email1;
}
// 成员函数changePasswd()的实现
// 功能:修改密码
// 要求:在修改密码前,要求先输入旧密码,验证无误后,才允许修改。
// 如果输入旧密码时,连续三次输入错误,则提示用户稍后再试,暂时退出修改密码程序。
void User::changePasswd()
{
    string passwd2;
    int i;
    cout<<"请输入您的旧密码";
    cin>>passwd2;
    if(passwd2!="111111")
    {
        i++;
        cout<<"错误,请再次输入";
        cin>>passwd2;
    }
    if(i=3)
    {
        cout<<"请稍后再试"<<endl;
    }
    else
    {
        cout<<"修改成功!"<<endl;
        passwd=passwd2;
    }
}
// 成员函数printInfo()的实现
// 功能:打印用户信息
// 要求: 密码以6个*显示
void User::printInfo()
{
    cout<<"name is:"<<name<<endl;
    cout<<"passwd is:"<<"******"<<endl;
    cout<<"email is:"<<email<<endl;
}
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;
}

运行结果:

第二题:

源代码:

template<class T>
void apple(T a[],int left,int right)
{
    T temp;
    temp=a[left];
    int leftindex=left;
    int rightindex=right;
    while(leftindex<rightindex)
    {
    while(leftindex<rightindex)
    {
        if(temp<=a[rightindex])
        {
            rightindex--;
        }
        else
        {
            a[leftindex]=a[rightindex];
            leftindex++;
        }
    }
    a[leftindex]=temp;
    apple(a,left,leftindex-1);
    apple(a,rightindex+1,right);
}
}
int main()
{
    int i;
    int A[]={3,7,8,12,10};
    apple(A,0,4);
    for(i=0;i<=4;i++)
    {
        cout<<A[i]<<" ";
    }
    return 0;
}

运行结果:

实验结论与体会:

第一题的重载函数int类型和double类型加法无 难点,关键的是虚数的加减法,需要实部和虚部分开来相加;

第二题我认为是最难的一道题,先要定义函数模板,选出一个中间数,将数组分开,然后再将子序列大小排列,并利用循环函数以此类推,直到子序列只有两个数

第三题我认为只要将新旧姓名密码Email单独列出来,然后再利用类的性质定义声明就行了

转载于:https://www.cnblogs.com/csl-40/p/10583521.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值