C 代码未能给出预期结果,堆栈循环

C 代码未能给出预期结果,堆栈循环,c,C,我是一名学生,目前正在学习C语言,在编程方面没有太多经验。我一直在尝试创建一个程序,从用户那里接收“密码”,然后继续检查密码是否至少有一个字母、数字和特殊字符。我写了一些代码,但当我努力找出它的错误时,它并没有给出预期的结果 如果我输入“仅数字”密码或“仅特殊字符”,则返回“您错过了一个字母”即可 如果我输入一个“justcharacters”密码,它不会返回任何内容,对于包含所有3个字符的普通密码也是如此 这就是代码: int main() { char a[20]; int b

我是一名学生,目前正在学习C语言,在编程方面没有太多经验。我一直在尝试创建一个程序,从用户那里接收“密码”,然后继续检查密码是否至少有一个字母、数字和特殊字符。我写了一些代码,但当我努力找出它的错误时,它并没有给出预期的结果

如果我输入“仅数字”密码或“仅特殊字符”,则返回“您错过了一个字母”即可

如果我输入一个“justcharacters”密码,它不会返回任何内容,对于包含所有3个字符的普通密码也是如此

这就是代码:

int main()
{
   char a[20];
   int b = 0 ,c = 0,d=0;
   printf("Please type your password and make sure it contains a letter a number and a special character:");
   scanf("%s",a);
   while(b<=20){                                                    
        if(isalpha(a[b])){
            break;
            while(c<=20){                                              
                if(isdigit(a[c])){
                    break;
                    while(d<=20){                                  
                        if(isalpha(a[d]) || isdigit(a[d])){
                           d++; continue;                         
                        }else{
                            printf("Congratulations your Password has been saved\n");
                            }
                        } printf("You missed a special character\n");
                }else{c++; continue;}                               
            }
            printf("You missed a number\n");
        }else{b++; continue;}                                      
}
(b>20) ? printf("You missed a letter\n") : printf("");
    return 0; 
}
intmain()
{
chara[20];
int b=0,c=0,d=0;
printf(“请键入您的密码,并确保其中包含字母、数字和特殊字符:”);
scanf(“%s”,a);

while(byu)应该只有一个循环,在字符串的字符上循环。此外,检查是独立的,因此它们应该是一个接一个的(不是嵌套的)。所有嵌套循环的原因是什么?循环一次密码。当前字符是字母?数字?特殊字符?保存每个问题的答案,并在循环结束时检查它们并打印出任何适当的错误消息。结尾处的三元语句是某些编程风格指导的原因投标三元运算符的使用。三元运算符在某些情况下很有用。这不是其中之一。代码不会使用
if(isalpha(a[d])| | isdigit(a[d])
检查“特殊”字符,但如上所述,最好使用
if(!isalpha(a[d])&&!isdigit(a[d])
else if(isdigit(a[d]))
else/*special*/