Lava_Dreamer @ 2024-12-16 17:27:52
#include<bits/stdc++.h>
using namespace std;
int main(){
int low=0,up=0,num=0,zf=0,error=0,n,ascii,be,en;
char a[1000];
scanf("%s",a);
be=1;en=1;n=strlen(a);a[n+1]=',';
for(int x=1;x<=n;x++){
ascii=int(a[x]);
if(ascii>=48&&ascii<=57) num=1;
else{
if(ascii>=65&&ascii<=90) up=1;
else{
if(ascii>=97&&ascii<=122) low=1;
else{
if(ascii==33||ascii==57||ascii==35||ascii==36) zf=1;
else{
if(ascii==44){
int len=be-en;
if(low+up+num>=2&&zf==1&&error==0&&len>=6&&len<=12){
for(int i=be;i<en;i++) cout<<a[i];
cout<<"\n";
}
low=0;up=0;num=0;zf=0;error=0;be=x+1;
}
else error=1;
}
}
}
}
en++;
}
}
by PeppaYang @ 2024-12-16 18:06:33
#include<bits/stdc++.h>
using namespace std;
long long n;
string st;
int a,b,c,d,z=0;
void pd(){
a=0;
b=0;
c=0;
d=0;
int sum=0;
for(int i=0;i<st.size();i++){
if(st[i]==','){
if(sum<6 || sum>12){
z=i+1;
a=0;
b=0;
c=0;
d=0;
sum=0;
continue;
}
if((a==0 && c==0) || (b==0 && c==0) || (a==0 && b==0) || d==0){
a=0;
z=i+1;
b=0;
c=0;
d=0;
sum=0;
continue;
}
for(int j=z;j<i;j++){
cout<<st[j];
}
cout<<endl;
a=0;
b=0;
c=0;
d=0;
z=i+1;
sum=0;
}
if(st[i]>='A' && st[i]<='Z'){
a++;
}
if(st[i]<='z' && st[i]>='a'){
b++;
}
if(st[i]<='9' && st[i]>='0'){
c++;
}
if(st[i]=='!'){
d++;
}
if(st[i]=='@'){
d++;
}
if(st[i]=='#'){
d++;
}
if(st[i]=='$'){
d++;
}
sum++;
}
return ;
}
int main(){
cin>>st;
pd();
return 0;
}
懂了?
by JmBecca @ 2024-12-16 18:23:37
@Lava_Dreamer
不是我喷你哈,但是这坨代码真的是漏洞百出哈。给你详细剖析一下……
首先字符串的第一位下标是0,最后一位是n-1,所以你既然字符串长度记为n,那么在后面加逗号应该是:
a[n]=',';
而不是:
a[n+1]=',';
然后,if-else语句不是你这么用的,你这样嵌套太多,也会很乱。建议改if-else if语句。还有字符比较直接单引号加字符就可以直接比较啦,不用去记ASCII码的哈 代码如下:
ascii=a[x];
if(ascii>='0'&&ascii<='9') num=1;
else if(ascii>='A'&&ascii<='Z') up=1;
else if(ascii>='a'&&ascii<='z') low=1;
else if(ascii=='@'||ascii=='!'||ascii=='#'||ascii=='$') zf=1;
下面知道你是要判断了,但是求长的时候减反了哈。应该是用en-be。还有就像刚刚说的,字符串第一位是从0开始的,所以be初始化为0哈,不是1。
判断字符个数的时候你写的是:
if(zf==1)
但是题目是说“至少一个”哈,所以要写的是大于等于1哈。
代码如下:
else if(ascii==','){
int len=en-be;
if(low+up+num>=2&&zf>=1&&error==0&&len>=6&&len<=12){
for(int i=be;i<en;i++) cout<<a[i];
cout<<endl;
}
low=0;up=0;num=0;zf=0;error=0;be=x+1;
}
其他的就没有什么问题了哈。整合一下,你就AC了。
by Lava_Dreamer @ 2024-12-16 20:22:12
@JmBecca AC了,蟹蟹大佬Thank you٩('ω')و
by JmBecca @ 2024-12-16 20:33:27
@Lava_Dreamer壶关哈嘻嘻