PAT-B 1081 檢查密碼【模擬】

Enjoy_process發表於2019-02-27

                                                   PAT-B 1081 檢查密碼

                       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.

分析

模擬,具體看程式。

C++程式

#include<iostream>

using namespace std;


string solve(string s)
{
	bool flag1=false,flag2=false;//分別記錄是否有字母和數字 
	if(s.length()<6) 
	  return "Your password is tai duan le.";
	else
	{
		for(int i=0;i<s.length();i++)
		 if(isalpha(s[i]))
		   flag1=true;//有字母 
		 else if(isdigit(s[i]))
		   flag2=true; //有數字
		 else if(s[i]!='.')
		   return "Your password is tai luan le.";//存在非法字元 
	}
	if(flag1&&flag2)//合法 
	  return "Your password is wan mei.";
	else if(flag1)//只有字母沒有數字
	  return "Your password needs shu zi.";
	else if(flag2)//只有數字沒有字母
	  return "Your password needs zi mu.";
	//即沒有數字也沒有字母的情況,題目沒有告訴該怎麼處理 
}

int main()
{
	int n;
	cin>>n;
	getchar();//吸收回車符 
	while(n--)
	{
		string s;
		getline(cin,s);
		cout<<solve(s)<<endl; 
	}
	return 0;
}

 

相關文章