#include
#include
#include
int main()
{
char a[50];
while(scanf("%s",&a)!=EOF)
{
int n=0,i=0,j=0,k=0,m=0,g=0;
for(i=0;a[i]!='\0';i++)
{
n++;
if('A'<=a[i]&&a[i]<='Z')
j=1;
if('a'<=a[i]&&a[i]<='z')
k=1;
if('0'<=a[i]&&a[i]<='9')
m=1;
else
g=1;
}
int w;
w=j+k+m+g;
if(w>=3&&n>=8)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
基于Monster 组和GPT的调写:
两个问题:
修改后的代码
#include <stdio.h>
#include <string.h>
int main()
{
char a[50];
while (scanf("%s", a) != EOF) {
int n = strlen(a), i, j = 0, k = 0, m = 0, g = 0;
for (i = 0; i < n; i++) {
if ('A' <= a[i] && a[i] <= 'Z')
j = 1;
if ('a' <= a[i] && a[i] <= 'z')
k = 1;
if ('0' <= a[i] && a[i] <= '9')
m = 1;
if (!(('A' <= a[i] && a[i] <= 'Z') || ('a' <= a[i] && a[i] <= 'z') || ('0' <= a[i] && a[i] <= '9')))
g = 1;
}
int w = j + k + m + g;
if (w >= 3 && n >= 8)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
添加了一个判断,如果密码中不包含大小写字母和数字以外的字符,则g也会被赋值为1。
不知道你这个问题是否已经解决, 如果还没有解决的话: