1. 程式人生 > >PAT 1081 檢查密碼

PAT 1081 檢查密碼

ets strlen 幫助 con ref 格式 its brush pro

https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024

本題要求你幫助某網站的用戶註冊模塊寫一個密碼合法性檢查的小功能。該網站要求用戶設置的密碼必須由不少於6個字符組成,並且只能有英文字母、數字和小數點 .,還必須既有字母也有數字。

輸入格式:

輸入第一行給出一個正整數 N(≤ 100),隨後 N 行,每行給出一個用戶設置的密碼,為不超過 80 個字符的非空字符串,以回車結束。

輸出格式:

對每個用戶的密碼,在一行中輸出系統反饋信息,分以下5種:

  • 如果密碼合法,輸出Your password is wan mei.
  • 如果密碼太短,不論合法與否,都輸出Your password is tai duan le.
  • 如果密碼長度合法,但存在不合法字符,則輸出Your password is tai luan le.
  • 如果密碼長度合法,但只有字母沒有數字,則輸出Your password needs shu zi.
  • 如果密碼長度合法,但只有數字沒有字母,則輸出Your password needs zi mu.

輸入樣例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

輸出樣例:

Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.


代碼:
#include <bits/stdc++.h>

using namespace std;

const int maxn=1e5+10;
char s[maxn];

int main()
{
    int n;
    scanf("%d",&n);
     getchar();
    for(int i=1; i<=n; i++)
    {
        cin.getline(s, maxn);

        int len=strlen(s);
        int flag=0;
        int zm=0,sz=0,dot=0,cnt=0;
        if(len<6)
            printf("Your password is tai duan le.\n");
        else
        {
            for(int j=0; j<len; j++)
            {
                if(s[j]>=‘0‘&&s[j]<=‘9‘)
                    sz++;
                if(s[j]<=‘Z‘&&s[j]>=‘A‘||s[j]>=‘a‘&&s[j]<=‘z‘)
                    zm++;
                if(s[j]==‘.‘)
                    dot++;
            }
            //cout<<sz<<endl<<zm<<endl<<len<<endl<<dot<<endl;
           if(sz+zm+dot<len)
                printf("Your password is tai luan le.\n");

            else
            {
                if(sz==0&&zm!=0)
                    printf("Your password needs shu zi.\n");
                else if(sz!=0&&zm==0)
                    printf("Your password needs zi mu.\n");
                else
                    printf("Your password is wan mei.\n");
            }
        }
    }
    return 0;
}

  

PAT 1081 檢查密碼