• 算法竞赛入门经典ch3_ex6WERTYU


    把手放在键盘上时,稍不注意就会往右错一
    位。 这样,输入Q会变成输入W,输入J会变成输
    入K等。 键盘如图3-2所示。
    输入一个错位后敲出的字符串(所有字母均
    大写),输出打字员本来想打出的句子。 输入保
    证合法,即一定是错位之后的字符串。 例如输入中不会出现大写字母A。

    样例输入:

    O S, GOMR YPFSU/

    样例输出:

    I AM FINE TODAY.

    疑问

    • 如何知道左边的是什么字母?

      用一个常量字符串把所有字符存起来

    要点

    • 用一个常量字符串把所有字符存起来
    • 边读边写
    • 检测当前字母在常量字符串中的位置
    • 输出前一个

    code

    #include <stdio.h>
    //常量数组
    char s[] = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"; //47个字符
    int main()
    {
        int i, c;
        while ((c = getchar()) != EOF)
        {
            //跳出循环时i就是输入字母在s中的位置.s[i]是用来判断字符串结尾的
            for (i = 1; s[i] && s[i] != c; i++); //注意分号//如果不在s中i=47(结束符)
            if (s[i])
            {
                putchar(s[i - 1]);//如果找到,则输出它的前一个字符
            }
            else
            {
                putchar(c); //putchar,输出字符,跟printf没什么区别,printf可以支持更多类型
            }
        }
    
        return 0;
    }

    小结

    for (i = 1; s[i] && s[i] != c; i++);
    • 注意分号
    • 如果c不在s中i=47(结束符)
    putchar(c);

    输出字符,跟printf没什么区别,printf可以支持更多类型

  • 相关阅读:
    VS2010程序打包
    Extjs布局
    Extjs4.x完美treepanel checkbox无限级选中与取消
    extjs 4.2 日期控件 选择时分秒功能
    extjs4.0下的日期控件的星期显示为y的解决办法
    linux下mysql 配置
    坐标轴笔记
    cpp 内嵌函数(lambda,struct)
    ue4 笔记
    ue4 蓝图方法备份
  • 原文地址:https://www.cnblogs.com/shanchuan/p/8150300.html
Copyright © 2020-2023  润新知