int main(){
int s1,i;
int count1=0,count2=0;
int a[100];
scanf("%s",a);
for(i=1;a[i]!='#';i++){
if(a[i]>'0'&&a[i]<'9')
count1++;
else if(a[i]>'a'&&a[i]<'z'||a[i]>'A'&&a[i]<'Z')
count2++;
else printf("密码不合格"); break;
}
if(i<6) printf("密码不合格");
if(count1<2) printf("密码不合格");
else printf("密码合格");
return 0;
}
供参考:
#include <stdio.h>
int main()
{
int i = 0, cnt1 = 0, cnt2 = 0;
char a[100] = { 0 };
while ((a[i] = getchar()) != '#') {
if (a[i] >= '0' && a[i] <= '9')
cnt1++;
else if (a[i] >= 'a' && a[i] <= 'z' ||
a[i] >= 'A' && a[i] <= 'Z')
cnt2++;
i++;
}
if (i < 6 || cnt1 + cnt2 != i || cnt1 < 2)
printf("密码不合法");
else
printf("密码合法");
return 0;
}
for循环里面应该是i=0而不=1,否则第一位和末位检测不到
for循环内的判断条件漏了=,这导致0,9a,z,A,Z检测不到,从而导致count1和count2出错
应该改为if(i≤5)
错误一大堆
1.索引从0开始,而不是1
2.判断时只判断大于小于,没有判断等于
3.不要在for循环里直接输出文字,而应该在后面统一输出
或者循环里输出文字后要调用return直接返回
你这样写,循环里输出一遍不合格,循环结束又输出一遍不合格,输出2遍