• PAT乙级1033


    1033 旧键盘打字 (20 分)
     

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

    输入格式:

    输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105​​ 个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,.-+(代表上档键)。题目保证第 2 行输入的文字串非空。

    注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

    输出格式:

    在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

    输入样例:

    7+IE.
    7_This_is_a_test.
    

    输出样例:

    _hs_s_a_tst
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 string bad,n;
     4 int main()
     5 {
     6   getline(cin,bad);
     7   getline(cin,n);
     8   int len=n.length();
     9   for(int i=0;i<len;i++)
    10   {
    11     if(bad.find(toupper(n[i]))!=string::npos)
    12     continue;
    13     if(isupper(n[i])&&bad.find('+')!=string::npos)
    14     continue;
    15     cout<<n[i];
    16   }
    17   return 0;
    18 }

    注意点:

    1.string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos。(返回值可以看成是一个int型的数)

    2.int isupper(int c) 检查所传的字符是否是大写字母

    3.toupper()参数小写变成大写,否则返回该参数

    4.尽量使用全局函数string类中的getline(),其读入的第二个参数为string类型,不设置默认是遇到回车停止读入操作

    cin.getline是针对数组字符串的,以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止
    全局函数的getline(cin,str);处理后还留有结束符在输入流中,故需要使用cin.get();//接受最后一个结束符,才能接受后面得输入值。
  • 相关阅读:
    正则表达式
    虚拟机winXP试用期已过无法激活问题解决
    model.addattribute()的作用
    model.addAttribute() return @ResponseBody $ajax success data的关系
    bootStrap的使用
    【navicat】navicat导入导出数据库步骤
    【对比】mysql 与 oracle 区别
    oracle错误
    【备忘】船舶的几个吨位概念
    0731
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/10647023.html
Copyright © 2020-2023  润新知