PAT B1033 旧键盘上的几个键又毁坏了,于是在输入一段文字时,对应得的字符就不会出现。
2021/4/17 18:25:21
本文主要是介绍PAT B1033 旧键盘上的几个键又毁坏了,于是在输入一段文字时,对应得的字符就不会出现。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题中可用的字母包括大小写(给出的坏键的字母,全为大写),数字,"_" “,” “.” “-” “+”,并且用“+”号代表上档键即(SHIFT)。
输入的两行中分别给出那些坏掉的键,以及应该输出的文字。
输出可以出现的结果文字
分析:
1.给出的坏键的字母全为大写,因此为了统一写法应该先转化为小写,这样小写与大写都无法输出了(符合实际)
2.再给出应该出现的字符串时,如有大写字母应该保证其小写字母的键位与上档键(“+”)同时完好才能输出,并且应该输出大写字母,若只有小写字母完好,则输出的为小写。
1 #include<cstdio> 2 #include<cstring> 3 const int maxn = 100010; 4 bool hashTable[256]; 5 char str[maxn]; 6 int main() { 7 memset(hashTable, true, sizeof(hashTable));//初始全部定true,表示键全部完好。 8 gets_s(str);//输入坏掉的键 9 int len = strlen(str); 10 for (int i = 0; i < len; i++) { 11 if (str[i] >= 'A' && str[i] <= 'Z') {//先将字母键位全部转换为小写,方便之后判断是否输出 12 str[i]+= 32; 13 } 14 hashTable[str[i]] = false; //将坏了的键全部标记住。 15 } 16 gets_s(str); //输入应该输入的字符串 17 len = strlen(str); 18 for (int i = 0; i < len; i++) { 19 if (str[i] >= 'A' && str[i] <= 'Z') { 20 int temp = str[i] + 32; 21 if (hashTable[temp] == true && hashTable['+'] == true) {//只有该字母键与上档键全部完好,才可以进行输出大写字母 22 printf("%c", str[i]); 23 } 24 } 25 else if (hashTable[str[i]] == true) { 26 printf("%c", str[i]);//其他键位只要完好便可以输出 27 } 28 } 29 printf("\n"); 30 return 0; 31 }
这篇关于PAT B1033 旧键盘上的几个键又毁坏了,于是在输入一段文字时,对应得的字符就不会出现。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现