題目描述: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