zoukankan      html  css  js  c++  java
  • 算法竞赛入门经典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可以支持更多类型

  • 相关阅读:
    顺序查找
    折半查找
    KMP
    php长时间的脚本,报502
    AcWing 27. 数值的整数次方
    acwing 25. 剪绳子
    Best Cow Line <挑战程序设计竞赛> 习题 poj 3617
    acwing 23. 矩阵中的路径
    AcWing 34. 链表中环的入口结点
    AcWing 33. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/shanchuan/p/8150300.html
Copyright © 2011-2022 走看看