当前位置: 首页 > news >正文

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\n", 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\n", s);
            }
        }
    }

    return 0;
}


转载于:https://www.cnblogs.com/tigerisland/p/7564651.html

相关文章:

  • CentOS下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决
  • Linux 下vsftp配置文件
  • Flymeos插桩适配教程
  • 在liunx中构建DNS主从服务器的配置文档
  • httpd搭建虚拟主机、设置访问认证以及https相关的用法
  • 百度编辑器(Ueditor)最新版(1.4.3.3)插入锚点失败原因分析及BUG修复
  • Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)
  • jsp页面实现局部刷新
  • k8s如何管理Pod
  • 全屏无标题栏解决方法
  • SQL Server 2008 中SQL查询语句中字段值不区分大小写问题处理
  • 初识JavaScript
  • iOS: 如何调节UITabbarItem的图片和文字位置
  • Python学习笔记——文件写入和读取
  • C/C++动态分配与释放内存的区别详细解析
  • [ JavaScript ] 数据结构与算法 —— 链表
  • canvas 高仿 Apple Watch 表盘
  • github从入门到放弃(1)
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript类型识别
  • laravel5.5 视图共享数据
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redis字符串类型内部编码剖析
  • spark本地环境的搭建到运行第一个spark程序
  • Vim Clutch | 面向脚踏板编程……
  • vue学习系列(二)vue-cli
  • 从伪并行的 Python 多线程说起
  • 关于extract.autodesk.io的一些说明
  • 基于 Babel 的 npm 包最小化设置
  • 简单实现一个textarea自适应高度
  • 简析gRPC client 连接管理
  • 如何合理的规划jvm性能调优
  • 使用 @font-face
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 再次简单明了总结flex布局,一看就懂...
  • 自动记录MySQL慢查询快照脚本
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • #HarmonyOS:Web组件的使用
  • #vue3 实现前端下载excel文件模板功能
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (差分)胡桃爱原石
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)大型网站架构演变和知识体系
  • .bat批处理(一):@echo off
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 8.0 中有哪些新的变化?
  • .NET Core跨平台微服务学习资源
  • .net6 webapi log4net完整配置使用流程
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器