这样的题应该怎么做啊?

密码安全一直是一件棘手的事情。用户更喜欢容易记住的简单密码,但这样的密码通常不安全。一些网站使用随机生成的密码,但用户很难记住它们,有时会把它们写在电脑上的笔记上。一个潜在的解决方案是生成相对安全且仍易于记忆的密码。
小明正在开发这样一个密码生成器,你的工作是测试它,确保密码是可接受的。要被接受,密码必须满足以下三条规则:

1.它必须至少包含一个元音。
2.它不能包含三个连续的元音或三个连续的辅音。
3.除了 ee 或 oo 之外,它不能包含同一个字母的两个连续出现。 元音是 a、e、i、o 和 u,所有其他字母都是辅音。

供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    int  i, j, k, flg, flag;
    char alphabet1[5] = {'a','e','i','o','u'},
         alphabet2[21]= {'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'},
         paw[21];

    scanf("%s", paw);
    for (i = 0,flg = 1;paw[i];i++) {
        for (j = 0;j < 5;j++)
            if (alphabet1[j] == paw[i]) {flg = 0; break;}
        if (!flg) break;
    }
    if (flg) {//如果输入字符串中没有元音字母则输出no并返回
        printf("no");
        return 1;
    }

    for (i = 0;i < strlen(paw) - 2;i++)
    {
        flg = 0; flag = 0;
        for (j = i;j < i + 3;j++)
        {
            for (k = 0;k < 5;k++)
                if (paw[j] == alphabet1[k]) {flg = 1; break;}
            for (k = 0;k < 21;k++)
                if (paw[j] == alphabet2[k]) {flag = 1;break;}
        }
        if (flg && flag) //如果包含连续3个字母的子字符串中含有元音和辅音则跳过
            continue;
        printf("no");//否则输出no并返回
        return 1;
    }

    for (i = 0;i < strlen(paw) - 1;i++)
    {
        if (paw[i] == paw[i+1] && paw[i] != 'e' && paw[i] != 'o')//判断连续两个字母是否符合条件
        {
            printf("no");
            return 1;
        }
    }

    printf("acceptable");
    return 0;
}