PTA basic 1033 旧键盘打字 (20 分) c语言实现(gcc)

 

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

输入格式:

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

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

输出格式:

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

输入样例:

7+IE.
7_This_is_a_test.
 

输出样例:

_hs_s_a_tst



测试点4 测试用例 //坏键为大写字母时,需要同时屏蔽大小写的对应字母

7IE.

7_This_is_a_testSE.

 

 1 //因为可以输入的字符有限,皆为ascii码,因此使用ascii码的int数值形成字典,用来记录字符是否可以输出
 2 //用字典的下标来快速判断某个字符是否可以输出,
 3 //如果'+'键坏掉了,那么a-z还是可以输出,但是A-Z的字符不能被输出,其他字符可以输出  测试点0 1 3
 4 //如果a-z的某个字符键坏掉,那么大写小写的对应该字母都不应该出现,理应从可以输出的字典中剔除 测试点4
 5 //初始数组的值都为0,然后将坏键对应下标的值置为1
 6 //设置一个标志值,用来记录是否有字符输出,如果没有字符输出(即flag=0),则输出空行 测试点2
 7 
 8 #include "stdio.h"
 9 #include "stdlib.h"
10 #include "string.h"
11 
12 int main(){
13     int i=0,flag=0,j,alen,clen;
14     int arr[129];
15     char availableList[100001],checkList[100001];
16     char c;
17     memset(arr,0,sizeof(int)*129);
18     while((c=getchar())!='\n'){
19         availableList[i]=c;
20         i++;
21     }
22     scanf("%s",checkList);
23     alen=strlen(availableList);//记录坏键的数量
24     clen=strlen(checkList);//待判定的字符串长度
25     if(alen){//无坏键时跳过
26         for(i=0;i<alen;i++){//循环判定,需要注意的是 坏键序列的字母只有大写,但是标记坏键的时候 大小写都需要标记  测试点4
27             c=availableList[i];
28             if(c<='Z'&&c>='A'){
29                 arr[c-'A'+'a']=1;
30                 arr[c]=1;
31             }
32             else if(c=='+'){//+键坏掉则屏蔽所有大写字母
33                 for(j=(int)'A';j<(int)'A'+26;j++)arr[j]=1;
34             }else{
35                 arr[c]=1;
36             }
37         }
38     }
39     if(alen){//无坏键直接输出所有字符,有坏键进入循环判断是否可以输出
40         for(i=0;i<clen;i++){
41             if(arr[(int)checkList[i]]==0){
42                 printf("%c",checkList[i]);
43                 flag=1;
44             }
45         }
46     }else{
47         printf("%s",checkList);
48         flag=1;
49     }
50 
51     if(flag==0){
52         printf("\n");
53     };
54     return 0;
55 }

 

posted @ 2021-04-25 14:16  keiiha  阅读(135)  评论(0编辑  收藏  举报