[PAT 乙级] 1067 试密码 (20 分)(字符串处理) (内含测试点2,5的分析)2021-08-01

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二刷

一开始用cin>>temp;总是2,5测试点过不了,直到用getchar()和getline()才过
二刷也是这两个点,草,下次一长串别管题目说没说什么条件一律用getline()。

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

我的代码:

一开始用cin>>temp;总是2,5测试点过不了,直到用getchar()和getline()才过
多默写几遍柳神的代码,我的思路有点混乱

#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
    string s,temp;
    int n;
    cin >> s >> n;
    int count = 0;
    getchar();
    while(1) {
       getline(cin,temp);
       //cin>>temp;过不了
        if(temp == "#"){break;}
        if (temp != "#") {
            if (count < n) {
                if (temp == s) {
                    cout << "Welcome in" << endl;
                    break;
                }
                else {
                    cout << "Wrong password: " << temp << endl;
                    count++;
                }
            }
        }
    }
    if(count>=n){
        cout << "Account locked" <<endl;
        
    }
    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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值