2020/9/8 小米编程第一题,c++已ac
题目:密码要求检测
要求:长度在8-120 之间,密码包括 大写 小写 数字 和符号, 长度不符合 输出1 类型不符合输出2 密码都符合输出0
给的输入为:123 12345678 123abcABC!!!
输出;
1
2
0
#include<bits/stdc++.h>
using namespace std;
int main()
{
stringstream ss;
string str;
vector<string> v;
getline(cin,str); //先把这一行全部输入道str中
//使用stringstream进行处理 是以空格进行分割的
ss<<str;
string str2;
while(ss>>str2)
{
v.push_back(str2);
}
//例如: 123 12345678 123abcABC!!!
//处理之后v中包含了三个字符串 然后我们在去对每个字符串进行判断是否满足条件
for(auto i : v)
{
//i是一个字符串
if(i.size()<8 || i.size()>120)
{
cout<<"1"<<endl;
continue;
}
//能走下来长度是符合
//标记一种状态,全部为false
bool flagupper = false;
bool flaglower = false;
bool flagdigit= false;
bool flagpunct= false;
for(auto j : i)
{
//这里的j是i字符串中的一个字符
//只要满足这些条件,就改变状态为true;
if(isupper(j) )
{
flagupper = true;
}
else if(islower(j))
{
flaglower=true;
}
else if(isdigit(j))
{
flagdigit=true;
}
else if(ispunct(j) )
{
flagpunct=true;
}
}
//只有状态都满足的时候,我们才输出 0
if(flagdigit && flaglower&&flagupper&&flagpunct)
{
cout<<"0"<<endl;
}
else
{
cout<<"2"<<endl;
}
//一组密码检测完成后,要将状态改回去
flagdigit=false;
flaglower=false;
flagpunct=false;
flagupper=false;
}
return 0;
}

716

被折叠的 条评论
为什么被折叠?



