ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1033 旧键盘打字

2020-04-15 12:57:24  阅读:233  来源: 互联网

标签:文字 字符 输出 打字 键盘 大写字母 字符串 1033 输入


1033 旧键盘打字 (20分)

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

输入格式:

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

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

输出格式:

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

输入样例:

7+IE.
7_This_is_a_test.

     
       
     
   

输出样例:

_hs_s_a_tst

审题

字符串处理题,输入两个字符串,第一个字符串的字母都是大写,第二个字符串中有小写字母和大写字母。两个字符串都可以包含题中所给的特殊符号。输出结果要求输出第二个字符串中除去第一个字符串中的所含字符后的字符串。如果第一个字符串中有‘+’,则输出结果中不能包含大写字母。

思路

  1. 判断第一个字符串中是否含有’+‘,如有,将第二行字符串中大写字母去掉。

  2. 遍历第一个字符串,将第一个字符串中字符和第二个字符串中字符配对,如果相同(注意大小写)则删去第二个字符串中的该字符。

  3. 这里删除一个字符可用题中所给字符之外的字符代替待删除字符,模拟删除的过程

参考代码

 1 #include<iostream>
 2 #include<string>
 3 #include<string.h>
 4 using namespace std;
 5 ​
 6 int main()
 7 {
 8     string a,b;
 9     getline(cin,a);
10     getline(cin,b);
11     for(int i=0;i<a.length();i++){
12         if(a[i]=='+'){
13             for(int k=0;k<b.length();k++){
14                 if(b[k]>='A'&&b[k]<='Z'){
15                     b[k]=' ';
16                 }
17             }
18         }
19     }   
20     for(int i=0;i<a.length();i++){
21         for(int j=0;j<b.length();j++){
22             //if(a[i]==b[j]||a[i]==(char)(b[j]-32))
23             if(a[i]==b[j]||tolower(a[i])==tolower(b[j])){
24                 b[j]=' ';
25             }
26         }
27     }
28     for(int i=0;i<b.length();i++){
29         if(b[i]!=' '){
30             cout<<b[i];
31         }
32     }
33 }

 

 

总结

第一次用if(a[i]==b[j]||a[i]==(char)(b[j]-32))来判断相同的字母(不分大小写)出现错误。思考后发现a[i]==(char)(b[j]-32)),这里a[i]和b[j]可以是不同的特殊字符,ascii码差值为32。因此改用tolower()将两者都转为小写比较。

C++语言中tolower()函数是把字符串都转化为小写字母;

touppre()函数是把字符串都转化为大写字母。

这两个函数的声明在头文件<cctype>中,但是经过测试,如果不包含头文件<cctype>仅仅有<iostream>也是可以的。

坑点

注意题目第一行可以不输入字符串,这里的换行符读入要处理一下。

标签:文字,字符,输出,打字,键盘,大写字母,字符串,1033,输入
来源: https://www.cnblogs.com/TreBienBA/p/12704484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有