SimpleMLXG 2020-04-14 09:08 采纳率: 0%
浏览 184
已采纳

c++假想且不实用的密码类(程序填空)

//创建一个假想并且不实用的密码类Password。
#include




......




class Password {
public:
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
......
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
private:
char *pwd; //密码(该行不允许修改)
};




......




int main() {
Password s1; //s1被设置为默认密码:Abcd1234
cout<<s1<<endl<<endl;

//密码长度必须在8~32之间,否则密码被置为默认密码:Abcd1234
Password s2("123456");
Password s3("ABCDEFGabcdefg01234567890123456789");
cout<<s2<<','<<s3<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则密码被置为默认密码:Abcd1234
Password s4("ABCD1234");
Password s5("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确构造用户所需要的密码。
Password s6("Wch54321");
Password s7("ABCDEFG0123456789abcdefg01234567");
cout<<s6<<','<<s7<<endl<<endl;

//拷贝构造
Password s8(s1);
Password s9=s6;
cout<<s8<<','<<s9<<endl<<endl;

//赋值运算
s2=s8=s6=s6;
cout<<s2<<','<<s8<<','<<s6<<endl;
s3=s4=s5=s6;
cout<<s3<<','<<s4<<','<<s5<<endl<<endl;

//将密码修改为默认密码:Abcd1234
s2.chgPWD(); //s2被设置为默认密码:Abcd1234
s3.chgPWD("Abcd1234");
cout<<s2<<','<<s3<<endl<<endl;

//密码长度必须在8~32之间,否则保持密码不变。
s4.chgPWD("123456");
s5.chgPWD("ABCDEFGabcdefg01234567890123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码长度在8~32之间,包含大写字母,小写字母和数字三者。
//正确修改为用户所需要修改的密码。
s4.chgPWD("Wch88888");
s5.chgPWD("abcde0123456789ABCDEFG0123456789");
cout<<s4<<','<<s5<<endl<<endl;

//密码必须包含大写字母,小写字母和数字三者。
//否则保持密码不变。
s4.chgPWD("ABCD1234");
s5.chgPWD("abcde12345");
cout<<s4<<','<<s5<<endl<<endl;

//输出所有已经构造的密码
cout<<"s1:"<<s1<<',';    cout<<"s2:"<<s2<<',';    cout<<"s3:"<<s3<<endl;
cout<<"s4:"<<s4<<',';    cout<<"s5:"<<s5<<',';    cout<<"s6:"<<s6<<endl;
cout<<"s7:"<<s7<<',';    cout<<"s8:"<<s8<<',';    cout<<"s9:"<<s9<<endl<<endl;

//密码比较==和!=
cout<<"s1==s2:"<<(s1==s2?"TRUE":"FALSE")<<',';
cout<<"s1==s4:"<<(s1==s4?"TRUE":"FALSE")<<endl;
cout<<"s1!=s2:"<<(s1!=s2?"TRUE":"FALSE")<<',';
cout<<"s1!=s4:"<<(s1!=s4?"TRUE":"FALSE")<<endl;

return 0;

}

输入

输出

见“样例输出”

输入样例 1


输出样例 1

(Abcd1234)

(Abcd1234),(Abcd1234)

(Abcd1234),(Abcd1234)

(Wch54321),(ABCDEFG0123456789abcdefg01234567)

(Abcd1234),(Wch54321)

(Wch54321),(Wch54321),(Wch54321)
(Wch54321),(Wch54321),(Wch54321)

(Abcd1234),(Abcd1234)

(Wch54321),(Wch54321)

(Wch88888),(abcde0123456789ABCDEFG0123456789)

(Wch88888),(abcde0123456789ABCDEFG0123456789)

s1:(Abcd1234),s2:(Abcd1234),s3:(Abcd1234)
s4:(Wch88888),s5:(abcde0123456789ABCDEFG0123456789),s6:(Wch54321)
s7:(ABCDEFG0123456789abcdefg01234567),s8:(Wch54321),s9:(Wch54321)

s1==s2:TRUE,s1==s4:FALSE
s1!=s2:FALSE,s1!=s4:TRUE

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-04-14 18:09
    关注

    你的输出是错的

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class Password {
    public:
        Password()
        {
            chgPWD("Abcd1234");
        }
        Password(char * p)
        {
            chgPWD(p);  
        }
        Password(Password &p)
        {
            chgPWD(p.pwd);  
        }
        void chgPWD(char * p)
        {
            int chk = 0;
            if (strlen(p) >= 8 && strlen(p) <= 32)
            {
                for (int i = 0; i < strlen(p); i++)
                {
                    if (p[i] >= 'A' && p[i] <= 'Z') chk |= 1;
                    if (p[i] >= 'a' && p[i] <= 'z') chk |= 2;
                    if (p[i] >= '0' && p[i] <= '9') chk |= 4;
                }
                if (chk == 7)
                {
                    char * p1 = new char[100];
                    strcpy(p1, p);
                    pwd = p1;
                }
                else
                {
                    chgPWD("Abcd1234");
                }
            }
            else
            {
                chgPWD("Abcd1234");
            }
        }
        void chgPWD()
        {
            chgPWD("Abcd1234");
        }
        Password& operator=(Password& p)
        {
            chgPWD(p.pwd);
            return *this;
        }
        bool operator==(Password& p)
        {
            return strcmp(pwd, p.pwd) == 0;
        }
        bool operator!=(Password& p)
        {
            return strcmp(pwd, p.pwd) != 0;
        }
        friend ostream & operator<<(ostream &out,Password p);
    private:
        char *pwd; //密码(该行不允许修改)
    };
    
    ostream & operator<<(ostream &out,Password p)
    {
        out << "(" << p.pwd << ")";
        return out;
    }
    
    int main() {
    Password s1; //s1被设置为默认密码:Abcd1234
    cout<<s1<<endl<<endl;
    //密码长度必须在8~32之间,否则密码被置为默认密码:Abcd1234
    Password s2("123456");
    Password s3("ABCDEFGabcdefg01234567890123456789");
    cout<<s2<<','<<s3<<endl<<endl;
    
    //密码必须包含大写字母,小写字母和数字三者。
    //否则密码被置为默认密码:Abcd1234
    Password s4("ABCD1234");
    Password s5("abcde12345");
    cout<<s4<<','<<s5<<endl<<endl;
    
    //密码长度在8~32之间,包含大写字母,小写字母和数字三者。
    //正确构造用户所需要的密码。
    Password s6("Wch54321");
    Password s7("ABCDEFG0123456789abcdefg01234567");
    cout<<s6<<','<<s7<<endl<<endl;
    
    //拷贝构造
    Password s8(s1);
    Password s9=s6;
    cout<<s8<<','<<s9<<endl<<endl;
    
    //赋值运算
    s2=s8=s6=s6;
    cout<<s2<<','<<s8<<','<<s6<<endl;
    s3=s4=s5=s6;
    cout<<s3<<','<<s4<<','<<s5<<endl<<endl;
    
    //将密码修改为默认密码:Abcd1234
    s2.chgPWD(); //s2被设置为默认密码:Abcd1234
    s3.chgPWD("Abcd1234");
    cout<<s2<<','<<s3<<endl<<endl;
    
    //密码长度必须在8~32之间,否则保持密码不变。
    s4.chgPWD("123456");
    s5.chgPWD("ABCDEFGabcdefg01234567890123456789");
    cout<<s4<<','<<s5<<endl<<endl;
    
    //密码长度在8~32之间,包含大写字母,小写字母和数字三者。
    //正确修改为用户所需要修改的密码。
    s4.chgPWD("Wch88888");
    s5.chgPWD("abcde0123456789ABCDEFG0123456789");
    cout<<s4<<','<<s5<<endl<<endl;
    
    //密码必须包含大写字母,小写字母和数字三者。
    //否则保持密码不变。
    s4.chgPWD("ABCD1234");
    s5.chgPWD("abcde12345");
    cout<<s4<<','<<s5<<endl<<endl;
    
    //输出所有已经构造的密码
    cout<<"s1:"<<s1<<',';    cout<<"s2:"<<s2<<',';    cout<<"s3:"<<s3<<endl;
    cout<<"s4:"<<s4<<',';    cout<<"s5:"<<s5<<',';    cout<<"s6:"<<s6<<endl;
    cout<<"s7:"<<s7<<',';    cout<<"s8:"<<s8<<',';    cout<<"s9:"<<s9<<endl<<endl;
    
    //密码比较==和!=
    cout<<"s1==s2:"<<(s1==s2?"TRUE":"FALSE")<<',';
    cout<<"s1==s4:"<<(s1==s4?"TRUE":"FALSE")<<endl;
    cout<<"s1!=s2:"<<(s1!=s2?"TRUE":"FALSE")<<',';
    cout<<"s1!=s4:"<<(s1!=s4?"TRUE":"FALSE")<<endl;
    
    return 0;
    }
    
    

    (Abcd1234)

    (Abcd1234),(Abcd1234)

    (Abcd1234),(Abcd1234)

    (Wch54321),(ABCDEFG0123456789abcdefg01234567)

    (Abcd1234),(Wch54321)

    (Wch54321),(Wch54321),(Wch54321)
    (Wch54321),(Wch54321),(Wch54321)

    (Abcd1234),(Abcd1234)

    (Abcd1234),(Abcd1234)

    (Wch88888),(abcde0123456789ABCDEFG0123456789)

    (Abcd1234),(Abcd1234)

    s1:(Abcd1234),s2:(Abcd1234),s3:(Abcd1234)
    s4:(Abcd1234),s5:(Abcd1234),s6:(Wch54321)
    s7:(ABCDEFG0123456789abcdefg01234567),s8:(Wch54321),s9:(Wch54321)

    s1==s2:TRUE,s1==s4:TRUE
    s1!=s2:FALSE,s1!=s4:FALSE
    Press any key to continue . . .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?