PAT (Basic Level) 1067 试密码
当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。
输入格式:
输入在第一行给出一个密码(长度不超过 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
Welcom
解题思路:
主要就是输入的问题,一定要加 getchar!! ,不然第一个字符串会把你输入完n之后的回车录入。坑死了…
代码:
#include<iostream> #include<string> using namespace std; int main() { string password, st[1000]; int n, i, k = 0, count = 0; cin >> password >> n; getchar(); getline(cin, st[0]); while (!(st[k].length() == 1 && st[k][0] == '#')) { k++; getline(cin, st[k]); } for (i = 0; i < k; i++) { if (password == st[i] && i + 1 <= n) { cout << "Welcome in"; break; } else if(password != st[i] && i + 1 < n) { cout << "Wrong password: " << st[i] << endl; } else if (password != st[i] && i + 1 == n) { cout << "Wrong password: " << st[i] << endl << "Account locked"; break; } } return 0; }
ps:博主能力有限,如果读者发现什么问题,欢迎私信或评论指出不足。欢迎读者询问问题,乐意尽我所能解答读者的问题。欢迎评论,欢迎交流。谢谢大家!
- 点赞
- 收藏
- 分享
- 文章举报
- PAT (Basic Level) Practise (中文)1067. 试密码(20)
- PAT (Basic Level) Practise (中文) 1067. 试密码(20)
- PAT (Basic Level) Practice (中文)1067 试密码(C语言)
- PAT (Basic Level) Practise (中文)1067. 试密码(20) 解题报告
- PAT (Basic Level) ー1081 检查密码
- PAT (Basic Level) Practise (中文) 1076. Wifi密码 (15)
- PAT Basic 1067. 试密码(20)(C语言实现)
- PAT (Basic Level) 1081 检查密码
- PAT (Basic Level) Practice (中文)1081 检查密码(C语言)
- PAT(Basic Level)_1032_挖掘机技术哪家强
- PAT 乙级 (Basic Level) Practice (中文)1025
- 浙江大学PAT (Basic Level) Practice (中文)1003我要通过!JAVA代码实现及其规律分析
- PAT 乙级 (Basic Level) Practice (中文)1058
- PAT (Basic Level) Practice (中文)1066 图像过滤 (15 分)
- PAT(Basic Level)_1051_复数乘法
- PAT (Basic Level) Practice (中文)1009 说反话
- 浙大 pat Basic Level 1008
- 浙大 pat Basic Level 1019
- PAT (Basic Level) Practise (中文)1006. 换个格式输出整数 (15)
- PAT_1021 (Basic Level) Practise