• UVa 10082


    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版) 刘汝佳 编著

  • 相关阅读:
    HTML笔记
    Android自定义View 自定义组合控件
    CSS 笔记
    HTML 4.01 快速参考
    MSP430单片机之中断服务
    MSP430单片机之RTC实时时钟
    Centos7.4内核符号地址查找函数的BUG
    珍惜世上的五个人
    实习
    毕业后的五年拉开大家差距的原因在哪里
  • 原文地址:https://www.cnblogs.com/rgvb178/p/5944076.html
Copyright © 2020-2023  润新知