紧急措施

这一题给出了要输入的行数;用for循环一次读取每行数据并处理即可;定义四个变量:“account”“code”“email”与“myemail”(用于判断是否为要处理的一行数据)。如果“myemail == email”,那么便对code(密码)进行大小写转换操作即可。然后输出“account”“code”“email”。并在for循环外定义一个布尔值“nofind”,用于判定数据中有无要处理的数据。

#include<bits/stdc++.h>
using namespace std;
int main (){
    string myemail;//我的email
    int N;//账号数
    cin >> myemail;
    cin >> N;
    bool nofind = true;//用于标记是否找到
    for(int i = 0;i < N;i ++)
    {
        string account,code,email;
        cin >> account >> code >> email;
        // cout << account << ' ' << code << ' ' << email << endl;
        if(myemail == email){
            nofind = false;//标记“找到了”
            for(char &c : code){//更改密码
                if(islower(c)){c = toupper(c);}//小写转大写
                else if (isupper(c)){c = tolower(c);}//大写转小写
            } 
            cout << account << ' ' << code << ' ' << endl;//输出更改后的账号与密码
        }
    }
    if(nofind) cout << "empty" << endl;
    return 0;
}

过滤多余的空格

这道题有思路就很简单。依据题意我们用getline读取数据并存放到字符串中,在字符串遍历中进行空格判定操作。先定义一个布尔值变量用于标记当前字符之前是否为空格,然后开始遍历,不是空格就添加到新的字符串,并更新bool值为false;如果是空格,进入判定:bool值是否为false(即之前不是空格),为真,添加空格到新字符串,并且更新bool为true。最后输出新字符串即可。

注意:不要在原来字符串上进行操作,那样会影响字符串遍历。

#include<bits/stdc++.h>
using namespace std;
int main (){
    string s;
    getline(cin,s);//读取一整行输入
    string result = "";//新的字符串,用于存放处理后的字符串
    bool inSpace = false;//标记是否正在处理连续空格
    
    //字符串处理
    for(char &c : s){
        if(c != ' '){//遍历字符串,非空格则添加到新字符串
            result += c;
            inSpace = false;//重置标记
        }else{
            if(!inSpace){
                result += ' ';//只保留一个空格
                inSpace = true;//设置标记位
            }
            //如果inSpace为true,说明是连续空格的一部分,会直接跳过接下来的空格
        }
    }
    cout << result << endl;//输出结果
    return 0;
}

单词的长度

这道题可以用上一道题的框架,具体原理不必再解释。直接把删除空格操作改为输出单词长度并重置即可。

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    
    int i = 0;//i为单词长度
    bool inSpace = false;//用于记录当前字符前是否为空格
    for(char &c : s){
        if(c != ' ') {//当前字符不是空格
            i += 1;//单词长度加一
            inSpace = false;//更新bool状态
        }else{//是空格
            if(!inSpace){//字符前面不是空格
                cout << i << ',';//输出单词长度与逗号
                i = 0;//重置单词长度
                inSpace = true;//更新bool状态
            }
        }
    }
    cout << i << endl;//最后不会遇到空格,因此此时的i即为最后的单词长度。
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐