PAT_B_1067_試密碼

題目描述:spa

當你試圖登陸某個系統卻忘了密碼時,系統通常只會容許你嘗試有限屢次,當超出容許次數時,帳號就會被鎖死。本題就請你實現這個小功能。

輸入格式:
輸入在第一行給出一個密碼(長度不超過 20 的、不包含空格、Tab、回車的非空字符串)和一個正整數 N(≤ 10),分別是正確的密碼和系統容許嘗試的次數。隨後每行給出一個以回車結束的非空字符串,是用戶嘗試輸入的密碼。輸入保證至少有一次嘗試。當讀到一行只有單個 # 字符時,輸入結束,而且這一行不是用戶的輸入。

輸出格式:
對用戶的每一個輸入,若是是正確的密碼且嘗試次數不超過 N,則在一行中輸出 Welcome in,並結束程序;若是是錯誤的,則在一行中按格式輸出 Wrong password: 用戶輸入的錯誤密碼;當錯誤嘗試達到 N 次時,再輸出一行 Account locked,並結束程序。

輸入樣例 1:
Correct%pw 3
correct%pw
Correct@PW
whatisthepassword!
Correct%pw
#
輸出樣例 1:
Wrong password: correct%pw
Wrong password: Correct@PW
Wrong password: whatisthepassword!
Account locked
輸入樣例 2:
cool@gplt 3
coolman@gplt
coollady@gplt
cool@gplt
try again
#
輸出樣例 2:
Wrong password: coolman@gplt
Wrong password: coollady@gplt
Welcome in

坑點指南:blog

題目自己沒有什麼難度,可是如下的坑點值得好好考慮
// 要點:1. 題目中的密碼沒有空格,可是用戶輸入時可能會鍵入空格 
//       2. 標準密碼的長度是20, 可是用戶鍵入的密碼可能會大於20 

本人AC代碼:字符串

// 1067 試密碼 
// 要點:1. 題目中的密碼沒有空格,可是用戶輸入時可能會鍵入空格 
//       2. 標準密碼的長度是20, 可是用戶鍵入的密碼可能會大於20 
# include <stdio.h>
# include <stdlib.h> 
# include <string.h>

int main(void)
{
	char PassW[22], temp[52];
	int num;
	// 讀入標準密碼以及容許嘗試的次數 
	scanf("%s %d",PassW,&num);
	getchar();
	while (1)
	{
		gets(temp);
		num--; 
		// 若是僅輸入一個# 則中止輸入
		if (0 == strcmp("#", temp)) 
		{
			break;
		}
		// 比較字符串是否相等
		// 若是相等 
		if (0 == strcmp(PassW, temp) && num>=0)
		{
			printf("Welcome in");
			// 結束循環 
			break;
		}
		else if (0 != strcmp(PassW, temp) && num>=0)
		{
			printf("Wrong password: %s\n",temp);
			// 次數用盡,帳戶鎖定 
			// printf("num === %d\n",num);
			if (0 == num)
			{
				printf("Account locked");
				break;
			}		
		} 
	}
	
	return 0;
}

RRRget

相關文章
相關標籤/搜索