1067 试密码 (20 分)

简介: 1067 试密码 (20 分)

1067 试密码 (20 分)

当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。

输入格式:

输入在第一行给出一个密码(长度不超过 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

一开始用cin的时候出现部分错误,不知道为什么,2个样例都是正确的。

然后改成getline ,结果全部错误。

看输出结果发现第一行的字符串是空的,于是又再前面加上一句geline,读取那个多余的空字符串。就通过了。

为什么要用getline读取用户输入呢,因为虽然题目说正确的密码没有空格,

但是用户输入可能有空格

 

#include<iostream>
#include<string>
using namespace std;
int main()
{
  string the_password;
  int max_try_times;
  cin >> the_password >> max_try_times;
  string s[10001];
  int times = 0;
  getline(cin, s[times++]);
  do {
    getline(cin,s[times++]);
  } while (s[times-1] != "#");
 
  for (int i = 1; i <= max_try_times && s[i] != "#" && i<=times-1; i++) {
    if (s[i] == the_password && i <= max_try_times) {
      cout << "Welcome in" << endl;
      break;
    }
    if (s[i] != the_password && i<=max_try_times) {
      cout << "Wrong password: " << s[i] << endl;
      if (i == max_try_times) {
        cout << "Account locked" << endl;
        break;
      }
    }
  
  }
 
  return 0;
}
相关文章
|
1天前
|
安全 Java Apache
十个方法破解Java生成随机密码的小窍门
十个方法破解Java生成随机密码的小窍门
6 0
|
14天前
|
数据安全/隐私保护
1081 检查密码 (15 分)
1081 检查密码 (15 分)
|
1月前
|
数据安全/隐私保护
HJ20 密码验证合格程序
HJ20 密码验证合格程序
27 0
|
8月前
|
数据安全/隐私保护
华为机试HJ20:密码验证合格程序
华为机试HJ20:密码验证合格程序
|
10月前
|
机器学习/深度学习 数据安全/隐私保护
(leecode)密码检查
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求: 1. 密码只能由大写字母,小写字母,数字构成; 2. 密码不能以数字开头; 3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种; 4. 密码长度至少为8
48 0
(leecode)密码检查
|
数据安全/隐私保护
牛客网OR141 密码检查——“C”
牛客网OR141 密码检查——“C”
|
数据安全/隐私保护
PTA 1081 检查密码 (15 分)
本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。
384 0
|
数据安全/隐私保护
凯撒密码 (20 分)
凯撒密码 (20 分)
327 0
|
测试技术
1005 继续(3n+1)猜想 (25 分)
1005 继续(3n+1)猜想 (25 分)
72 0
L1-021 重要的话说三遍 (5 分)
L1-021 重要的话说三遍 (5 分)
73 0