1067 试密码 (20 分)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shiliang97/article/details/99688529

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

不知道是好是坏,我现在遇坑就跳

1.Cin>>s;读密码,遇到空格就断开了,要用getline(cin,s);

这样做还要先getchar();收了前面那个回车;

2.锁住之前要先输出 错误的密码

3.先判断‘#’,不然就会输出错误密码 #

我的代码

#include<iostream>
using namespace std;
int main(){
	string s,s2;
	int n;
	cin>>s>>n;
	int count=0;
    getchar();
	while(1){
        getline(cin, s2);
        count++;
		if(s2=="#"){
			break;
		}
		
		if(count<=n&&s==s2){
			cout<<"Welcome in";
			break;
		}
        else{
			cout<<"Wrong password: "<<s2<<endl;
            if(count>=n){
                cout<<"Account locked";
                break;
            }
		}
	}
	return 0;
} 

柳神极简代码

#include <iostream>
using namespace std;
int main() {
    string password, temp;
    int n, cnt = 0;
    cin >> password >> n;
    getchar();
    while(1) {
        getline(cin, temp);
        if (temp == "#") break;
        cnt++;
        if (cnt <= n && temp == password) {
            cout << "Welcome in";
            break;
        } else if (cnt <= n && temp != password) {
            cout << "Wrong password: " << temp << endl;
            if (cnt == n) {
                cout << "Account locked";
                break;
            }
        }
    }
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏日常杂谈

04-冒泡排序实现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

7610
来自专栏爱写Bug

LeetCode 599: 两个列表的最小索引总和 Minimum Index Sum of Two Lists

假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。

8010
来自专栏进击的多媒体开发

OpenGL 实现视频编辑中的转场效果

现在拍摄 vlog 的玩家越来越多,要是视频没有一两个炫酷的转场效果,都不好意思拿出来炫酷了。

16220
来自专栏Java那些事

Java集合必会14问(精选面试题整理)

答:通过分析源码我们知道了HashMap通过resize()方法进行扩容或者初始化的操作,下面是对源码进行的一些简单分析:

9930
来自专栏AI小白入门

【经验】初入NLP领域的一些小建议

ACL2019投稿刚刚落幕,投稿数超过了2800篇,可以说是历史以来最盛大的一届ACL。在深度学习的推动下,自然语言处理这个子领域也逐渐被推上人工智能大舞台的最...

10320
来自专栏京程一灯

七个简单但棘手的 JS 面试问题[每日前端夜话0xD4]

如果你参加 JavaScript 高级开发面试,那么很有可能在编码面试中被问到一些棘手的问题。

12310
来自专栏芋道源码1024

详解分布式 ID 生成器

整个结构是64位,所以我们在Java中可以使用long来进行存储。该算法实现基本就是二进制操作,单机每秒内理论上最多可以生成1024*(2^12),也就是409...

12320
来自专栏Tensorbytes

gitlab CI/CD (上)

pre-commit 脚本在每次你运行 git commit 命令时,Git 向你询问提交信息或者生产提交对象时被执行。你可以用这个 Hook 来价差即将被提交...

10020
来自专栏FreeBuf

Expandpass:用于解密你有点记不清的密码的工具

expandpass是一个简单的字符串扩展器,主要用于帮助你破解那些你有点记不清的密码。

7920
来自专栏日常杂谈

02-空间复杂度、递归

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

8510

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励