//创建一个假想并且不实用的密码类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
你的输出是错的
#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 . . .