PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20) C语言
2015-07-24 21:37
323 查看
1033. 旧键盘打字(20)
时间限制200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:
7+IE. 7_This_is_a_test.
输出样例:
_hs_s_a_tst
提交代码
一个是上档键坏掉的处理,一个是坏掉的都是以大写字母给出,这2个坑看到了,不过最后还是掉进了值保证第二个字符串为非空这个坑。
AC代码如下:
#include<stdio.h> #include<string.h> int main() { char s1[100010]={0}; char s2[100010]={0}; char s3[100010]={0};// 把s1中的大写字母转化为小写字母记录下来 int i,j=0,len; gets(s1); gets(s2); // scanf("%s",s1);题目只保证第二个字符串为非空,所以用gets()函数比较合适 // scanf("%s",s2); len=strlen(s2); for(i=0;i<strlen(s1);i++) { if(s1[i]>='A'&&s1[i]<='Z') { s3[j]=s1[i]+32; j++; } } if(strchr(s1,'+')!=NULL) { for(i=0;i<len;i++) { if(s2[i]>='A'&&s2[i]<='Z') { s2[i]=' ';// 有"+"则所有大写字母不输出 } } } for(i=0;i<strlen(s1);i++) { while(strchr(s2,s1[i])) { s2[strchr(s2,s1[i])-s2]=' '; } } for(i=0;i<strlen(s3);i++) { while(strchr(s2,s3[i])) { s2[strchr(s2,s3[i])-s2]=' '; } } for(i=0;i<len;i++) { if(s2[i]!=' ') { printf("%c",s2[i]); } } printf("\n"); return 0; }
相关文章推荐
- HDOJ-2091 空心三角形 C语言
- 给定一个日期,输出这个日期是该年的第几天。 C语言来做
- HDOJ-1002 A + B Problem II C语言
- C++Premer Plus学习(五)——函数探幽
- C++之贪吃蛇
- c语言程序 分支结构
- C++第一节:类、对象、构造函数、setget
- 【C++系列】之 运算符重载
- C语言课程设计-学生信息管理系统
- c++ 模板详解(一)
- C++每次读取一行字符串输入(学习笔记) (转)
- 我的C++笔记(类与对象)
- uva1395 Kruskal算法求最小生成树
- C语言概述
- Cpp -- static变量不属于类的实例
- C语言-字符串逆序
- C语言 关于补码的几个小知识
- 北航11年机试--从键盘输入包含扩展符'-'的字符串,将其扩展为等价的完整字符(C语言实现)
- 2015年7月24日笔记
- 折半查找(c语言)