算法篇 干货!!!(WERTYU) 打卡第一天

1,WERTYU
在这里插入图片描述
把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。
输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。
样例输入:
O S, GOMR YPFSU/
样例输出:
I AM FINE TODAY.
【分析】可以用if switch语句,但是太暴力了,繁琐!
一个较好的方法是使用常量数组

#include <stdio.h> 
char s[]= "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main()
{
	int i, c;
	while((c = getchar()) != EOF){
		for (i = 1; s[i] && s[i] != c; i++); /*//找错位之后的字符在常量表中的位置,即i,此处for的作用是单纯地做循环,不做任何具体操作*/
		if (s[i])
			putchar(s[i-1]);
		else
			putchar(c);
	}
	return 0;
}

~~ 善用常量数组往往能简化代码。定义常量数组时无须指明大小,编译器会计算。

在常量数组c中为什么有 \ 这”两个“字符呢?
我们应该想到转义字符这个概念。不只是在C语言中,在Java、C++中也同样,用 \ 这个字符来表示真正意义上的反斜线即 \ 。

发布了8 篇原创文章 · 获赞 8 · 访问量 1788

猜你喜欢

转载自blog.csdn.net/qq_45748475/article/details/104192835