PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)
2015-04-21 16:14
405 查看
PAT(BasicLevel)Practise(中文)-1033.旧键盘打字(20)http://www.patest.cn/contests/pat-b-practise/1033
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z,A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:
输出样例:
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z,A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:
7+IE. 7_This_is_a_test.
输出样例:
_hs_s_a_tst 题目信息整理: 1.应该输入的文字中可能出现的字符有:a-z,A-Z,_(代表空格),‘,’,‘.’,‘-’。 2.坏掉的键中除了上条出现的字符外,还有一个上档键,用'+'表示。如果‘+’号出现,则大写的字符无法被敲出来。 3.如果没有字符显示,则输出空行。 分析: 1.可能出现的字符只有26+26+4个,再加上上档键,所以第一行最多有26+26+4+1个字符,所以用hash表标记能否显示即可。 如果一个大写字母出现,则表示这个大写字母对应的小写字母的按键已损坏,则大小写都无法显示;如果上档键损坏,则大写字母全部无法显示。 2.第二行字符串的字符,hash表中标记为无法显示,则不显示;未标记,则可以显示。所以,读一个字符处理一个即可,无须开内存。 处理的过程就是判断能否显示,可以显示的话则显示。 3.需要标记是否有字符输出。没有的话,输出空行 第二次刷题:
#include<cstdio> intmain() { chartempchar=0,badkeys[128]={0},haveprint=0;//'\0'是c/c++语言中的字符串结束符,在ASCII字符集中对应数字0 while(scanf("%c",&tempchar)&&'\n'!=tempchar) { if('A'<=tempchar&&tempchar<='Z')badkeys[tempchar]=1,tempchar+='a'-'A';//某一个英文字母的大写形式出现,则其大写和小写都无法显示 badkeys[tempchar]=1; } if(badkeys['+'])for(inti='A';i<='Z';i++)badkeys[i]=1;//'+'出现,即上档键损坏,所有大写都无法显示 while(scanf("%c",&tempchar)&&'\n'!=tempchar) if(!badkeys[tempchar])printf("%c",tempchar),haveprint=1; if(!haveprint)printf("\n"); return0; }
第一次刷题:
#include<stdio.h>
#include<string.h>
intmain()
{
charbadkey[200];
charstrtrue[100010];
gets(badkey);gets(strtrue);
intistr=0,canout=1,num=0,len=strlen(badkey);
while(strtrue[istr])
{
canout=1;
for(inti=0;i<len;i++)
{
if(strtrue[istr]==badkey[i])
canout=0;
elseif('A'<=strtrue[istr]&&strtrue[istr]<='Z'&&badkey[i]=='+')
canout=0;
elseif('a'<=strtrue[istr]&&strtrue[istr]<='z'&&strtrue[istr]-'a'+'A'==badkey[i])
canout=0;
}
if(canout)
{
printf("%c",strtrue[istr]);
num++;
}
istr++;
}
if(!num)printf("\n");
return0;
}
相关文章推荐
- PAT (Basic Level) Practise (中文) 1033. 旧键盘打字(20)
- PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20)
- PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20) C语言
- PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20)
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20)
- PAT (Basic Level) Practise (中文)-1029. 旧键盘(20)
- PAT (Basic Level) Practise (中文) 1029. 旧键盘(20)
- PAT(basic level) 1033 旧键盘打字(20)
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20)
- PAT BASIC LEVEL 1033. 旧键盘打字(20)
- 【PAT】(Basic Level) Practise (中文)1029. 旧键盘(20)
- PAT (Basic Level) Practise:1033. 旧键盘打字
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20)
- PAT (Basic Level) Practise (中文)1029. 旧键盘(20) C语言
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1023. 组个最小数 (20)
- PAT (Basic Level) Practise (中文)1047. 编程团体赛(20)
- PAT (Basic Level) Practise (中文)1008. 数组元素循环右移问题 (20)
- PAT (Basic Level) Practise (中文)1053. 住房空置率 (20)