pat乙级1067测试点2和5不能通过,我查了可能是输入密码的时候包括空格,我把输入改成getline还是不能通过,大家看下


#include<iostream>
using namespace std;

int main(){
    string rtpass,pass[10];
    int n,cont = 0;
    cin>>rtpass>>n;
    getchar();
    getline(cin,pass[0]);
    while(pass[cont]!="#") {
        getline(cin,pass[++cont]);
    } 
    cont=0;
    while(n!=0){
        if(pass[cont]==rtpass){
        cout<<"Welcome in"<<endl;
        return 0;
        }
        else {
            cout<<"Wrong password: "<<pass[cont]<<endl;
            n--;
        }
        cont++;
    }
    if(n==0)cout<<"Account locked";
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/64351005692611.PNG '捕获.PNG')


图片没贴出来

img
有bug,循环还要加个条件cont小于等于输入密码个数

修改如下,供参考:

#include<iostream>
#include<string>
using namespace std;
int main() {
    string rtpass, pass, end = "#";
    int n;
    cin >> rtpass >> n;
    getchar();
    while (n) {
        getline(cin, pass);//用户输入可能带空格 
        if (pass != end) {
            if (pass == rtpass) {
                cout << "Welcome in" << endl;
                break;
            }
            else {
                cout << "Wrong password: " << pass << endl;
                n--;
            }
        }
        else {
            break;
        }
    }
    if (n == 0) {
        cout << "Account locked" << endl;
    }
    return 0;
}