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

【PAT】1081檢查密碼

1081 檢查密碼 (15)(15 分)

本題要求你幫助某網站的使用者註冊模組寫一個密碼合法性檢查的小功能。該網站要求使用者設定的密碼必須由不少於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;
int main(){
	int n;
	int have_num,have_abc;
	bool flag = true;
	string str;
	
	cin>>n;
	getchar();
	for(int i = 0; i < n; i++){
		have_num = have_abc = 0;
		flag = true;
		getline(cin,str);
//		cout<<"str"<<str<<endl;
		if(str.length() < 6){//密碼太短 
			cout<<"Your password is tai duan le."<<endl;
			continue;
		}else{//長度合格 
			for(int j = 0; j < str.length(); j++){
				if(str[j] <= '9' && str[j] >= '0')//存在數字 
					have_num = 1;
				else if((str[j] <= 'Z' && str[j] >= 'A') || (str[j] <= 'z' && str[j] >= 'a')){//存在字母 
					have_abc = 1;
				}else if(str[j] != '.'){//存在不合法字元 
					cout<<"Your password is tai luan le."<<endl;
					flag = false;
					break;
				}
			}
			if(!have_abc && flag){
				cout<<"Your password needs zi mu."<<endl;
			}
			if(!have_num && flag){
				cout<<"Your password needs shu zi."<<endl;
			}
			if(have_abc && have_num && flag){
				cout<<"Your password is wan mei."<<endl;
			}
		}
	}
	return 0;
}

有幾個地方

測試點2:輸入空格的時候

還有一個沒考到但是應該注意的樣例

輸入..................

好的,今天完成