首页 > 代码库 > UVa 10082 - WERTYU
UVa 10082 - WERTYU
1.题目大意:
输入一个错位的字符串(字母全为大写),输出原本想打出的句子。
2.思路:
如果将每个输入字符所对应的应输出字符一一使用if或者switch,则过于繁琐。因此考虑使用常量数组实现。
3.应该注意的问题:
(1) 在对常量数组赋值时,应考虑字符转义符的影响,反斜杠"\"的转义符应为"\\"。
(2) 小心控制访问数组的范围。
4.代码:
#include"stdio.h"char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;‘ZXCVBNM,./";int main(){ int i,a; while((a=getchar()) != EOF) { for(i = 1; s[i] && (s[i]!=a); i++); // 寻找其错位之后的位置。如果i大于或等于数组s[]的长度,则s[i]=0。 if(s[i]) putchar(s[i-1]); // 如找到错位之后的位置,输出其原本想打出的字符 else putchar(a); } return 0;}
其中,第八行,也可以用以下方式取代(需要加相应头文件)
for(i = 1; i<strlen(s) && (s[i]!=a); i++);
5.小结
(1)慎用"scanf("%s")"输入字符串,因为其遇到空格或者Tab会停下
(2)在"scanf("%s",s)"中,不要在s前加"&"
(3)定义常量数组无需指明大小,编译器会自动计算。
参考书目:算法竞赛入门经典(第2版) 刘汝佳 编著
UVa 10082 - WERTYU
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。