stepz00zy @ 2024-07-26 19:22:12
#include <bits/stdc++.h>
using namespace std;
string a,b[101],temp;
int num=1,v,t=1,rt[5],tp,sz,nt=1;
bool judge()
{
for(int k=0;k<b[v].size();k++)
{
if(6<=b[v].size()<=12) sz=1;
if(b[v][k]>='a'&&b[v][k]<='z') {rt[1]=1;continue;}
if(b[v][k]>='A'&&b[v][k]<='Z') {rt[2]=1;continue;}
if(b[v][k]>='0'&&b[v][k]<='9') {rt[3]=1;continue;}
if(!(b[v][k]=='!'||b[v][k]=='@'||b[v][k]=='#'||b[v][k]=='$')) nt=0;
}
for(int j=1;j<=3;j++)
{
if(rt[j]==1)tp++;
}
if(tp>=2&&sz==1&&nt==1) return true;
}
int main()
{
getline(cin,a);
a+=",";
for(int i=0;i<=(a.length()+1);i++)
{
if(a[i]!=44)temp+=a[i];
else{b[num]=temp;temp="";num++;}
}
for(int i=1;i<=num;i++)
{
v=i;
if(judge()) cout<<b[i]<<endl;
}
return 0;
}
by meifan666 @ 2024-07-26 19:29:28
@stepz00zy 为什么有特殊字符时nt为0?
by meifan666 @ 2024-07-26 19:31:33
@stepz00zy
1.第一个循环中i<a.length()+1
2.最后的循环中i<num
by stepz00zy @ 2024-07-26 19:38:46
@meifan666 在更改循环后,devc++中测试没问题,但提交后仍是WA。。。
by meifan666 @ 2024-07-26 19:42:50
@stepz00zy 函数里为啥没判断一个rt就continue?
by stepz00zy @ 2024-07-26 20:13:19
@meifan666 思路是从上到下依次检测大写,小写和数字,如果是,则设置数组rt的值,并继续检测下一个字符。如果这三个都不是,则判断符号是否为那四个,不是就设置nt为0
by stepz00zy @ 2024-07-26 20:18:39
判断rt写在了judge函数下部分
by meifan666 @ 2024-07-26 22:09:46
@stepz00zy 你rt好像没有清零(每判断一个单词清零)
by stepz00zy @ 2024-07-29 17:06:20
@meifan666 已绿灯,感谢(忘回复了,补个回复)