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;
}
相关文章
|
图形学 开发者
U3D小游戏开发秘籍:实战代码优化与性能提升技巧
【7月更文第13天】Unity 3D(U3D)作为游戏开发界的瑞士军刀,以其强大的灵活性和跨平台能力,让无数创意化为指尖上的精彩。但对于初涉U3D的小游戏开发者而言,如何高效构建项目,确保流畅体验,是一门必修课。本文将深入浅出,结合实战代码示例,分享一系列优化与提升U3D小游戏性能的宝贵技巧。
258 1
|
10月前
|
算法 网络协议 网络安全
政务单位免费IP地址SSL证书
政务单位申请免费IP地址SSL证书需先确认IP地址为公网IP并拥有管理权限,选择如JoySSL等提供免费测试证书的服务商。申请流程包括注册账号、选择证书类型、提交申请、验证信息、等待审核签发、下载安装证书。注意事项包括安全性、合规性、定期更新及技术支持。通过合理配置,可提升网站安全性和公信力。
|
数据安全/隐私保护
第一次机房收费系统 修改密码窗体
第一次机房收费系统 修改密码窗体
112 0
|
存储 JSON NoSQL
Java MongoDB 多联查询
Java MongoDB 多联查询
706 0
|
索引 Python
【Python从入门到实践3.0】扑克牌发牌程序
【Python从入门到实践3.0】扑克牌发牌程序
|
安全 Android开发
详解 RxJava 的 Disposable
RxJava2 的 Disposable,可以在适当时机取消订阅、截断数据流,避免 Android 中的内存泄露。
1401 0
|
Dart JavaScript 前端开发
关于Dart的一些知识点
关于Dart的一些知识点
|
设计模式 自然语言处理 数据可视化
DM 管理平台优势
DM 是一个完全开源的项目,源代码全部托管在 Gitee 上,项目源码和核心插件源码放在 https://gitee.com/xiaomagenb/dlvm
382 0
DM 管理平台优势
|
Linux
全志A33 lichee 搭建Qt App开发环境编写helloworld
开发平台 芯灵思SinlinxA33开发板 嵌入式linux 开发板 Step 1 在虚拟机(CentOS7)上安装Qt Creator 将qt-creator-opensource-linux-x86_64-3.5.1.run 拷贝到虚拟机中,双击安装,全部点下一步即可。
2762 0
|
C# Shell 缓存
从PRISM开始学WPF(八)导航Navigation?
原文:从PRISM开始学WPF(八)导航Navigation? 0x6Navigation Basic Navigation Prism中的Navigation提供了一种类似导航的功能,他可以根据用户的输入,来刷新UI。
1615 0