字符串
某网站规定注册账号时密码必须达到一定强度才可以。他们规定密码长度至少6位,数字、大写字母、小写字母、符号(~!@#$%^&*()[]}{|\<>?/.,:”‘;)这四类中至少包含三类才合格。现在请你写一段程序来判断一个密码是否合格。输入:
第一行为一个整数n(0<n<10),代表测试用例组数,
后边是n行测试用例,每行为一个长度不超过30的字符串
输出:
共n行,与输入的n行测试用例相对应,如果密码合格则输出yes,否则输出no。
#include <stdio.h>
#include<string.h>
int main()
{
int n,i,j,b,c[4]={0,0,0,0},x=0;
char a[10][30];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",&a[i]);
for(i=0;i<n;i++)
{
b=strlen(a[i]);
if(b<6)
printf("no\n");
else{
for(j=0;j<b;j++)
{
if(a[i][j]>='0'&&a[i][j]<='9')
c[0]++;
else if(a[i][j]>=65&&a[i][j]<=90)
c[1]++;
else if(a[i][j]>=97&&a[i][j]<=122)
c[2]++;
else if(a[i][j]>=33&&a[i][j]<=47&&a[i][j]!='+'&&a[i][j]!='-'||a[i][j]>=58&&a[i][j]<=64&&a[i][j]!='='||a[i][j]>=91&&a[i][j]<=96&&a[i][j]!='_'||a[i][j]>=123&&a[i][j]<=126)
c[3]++;
}
for(j=0;j<4;j++)
{
if(c[j]>0) x++;
}
if(x>=3)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}
我试了几个答案都是对的,但是提交后却显示答案错误