• HDU1048 The Hardest Problem Ever


    问题链接:HDU1048 The Hardest Problem Ever入门训练题,用C语言编写程序。

    以往,密码通信是一件重要的事情,是一项高技术的工作。不过译码的时候,通常是通过查密码本来实现的。这种方法依旧适用于现在这个计算机时代。

    查表法仍然是一种好办法。有些程序员通过观察,找出编码规律,用程序来译码,程序没有通用性,不值得推荐和借鉴。

    译码过程,使用字符指针来处理,是一种好办法。先计算字符串长度,再用长度值来控制循环处理是一种倒腾。

    简洁版AC程序如下:

    /* HDU1048 The Hardest Problem Ever(简洁版) */
    
    #include <stdio.h>
    #include <string.h>
    
    char start[]= "START";
    char end[]= "END";
    char endofinput[]= "ENDOFINPUT";
    char cipher[] = "VWXYZABCDEFGHIJKLMNOPQRSTU";
    
    int main(void)
    {
        char s[1024], *p;
    
        for(;;) {
            gets(s);
    
            // 判断开始:START
            if(strcmp(s, start) == 0)
                continue;
    
            // 判断报文结束:END
            if(strcmp(s, end) == 0)
                continue;
    
            // 判断结束:ENDOFINPUT
            if(strcmp(s, endofinput) == 0)
                break;
    
            // 译码
            p = s;
            while(*p) {
                if('A' <= *p && *p <='Z') {
                    *p = cipher[*p - 'A'];
                }
                p++;
            }
    
            // 输出结果
            printf("%s
    ", s);
        }
    
        return 0;
    }

    严格语法版AC程序如下:

    /* HDU1048 The Hardest Problem Ever */
    
    #include <stdio.h>
    #include <string.h>
    
    char start[]= "START";
    char end[]= "END";
    char endofinput[]= "ENDOFINPUT";
    char cipher[] = "VWXYZABCDEFGHIJKLMNOPQRSTU";
    
    int main(void)
    {
        char s[1024], *p;
    
        for(;;) {
            gets(s);
    
            // 判断结束:ENDOFINPUT
            if(strcmp(s, endofinput) == 0)
                break;
    
            // 判断开始:START
            if(strcmp(s, start) == 0) {
                // START之后,END之前,需要处理多行
                for(;;) {
                    gets(s);
    
                    // 判断报文结束:END
                    if(strcmp(s, end) == 0)
                        break;
    
                    // 译码
                    p = s;
                    while(*p) {
                        if('A' <= *p && *p <='Z') {
                            *p = cipher[*p - 'A'];
                        }
                        p++;
                    }
    
                    // 输出结果
                    printf("%s
    ", s);
                }
            }
        }
    
        return 0;
    }


  • 相关阅读:
    R学习之——R用于文本挖掘(tm包)
    【转】基于LDA的Topic Model变形
    Windows操作系统实习之读者写者问题
    应用《开场白》ios源码分享
    一个美式英语发音的app开源
    20款优秀的移动产品原型和线框图设计工具
    sqlite 数据库在ios中的使用
    28个UI免费漂亮的切换开关PSD下载
    ios应用程序生命周期
    Ludei HTML5平台将于今年夏季支持WebGL 3D技术
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564651.html
Copyright © 2020-2023  润新知