博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1048 The Hardest Problem Ever
阅读量:6236 次
发布时间:2019-06-22

本文共 1899 字,大约阅读时间需要 6 分钟。

问题链接:。入门训练题,用C语言编写程序。

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

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

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

简洁版AC程序如下:

/* HDU1048 The Hardest Problem Ever(简洁版) */#include 
#include
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 
#include
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

你可能感兴趣的文章
Python,告别Print?
查看>>
printf语句中包含'\0'字符的处理
查看>>
canvas绘制圆形动画圆角进度条
查看>>
第十三周项目6-体验文件操作:C++文件操作初体验
查看>>
会员充值-》解决方案之一
查看>>
Jmeter的接口测试简介
查看>>
什么是网关
查看>>
Java的析构函数System的finalize()
查看>>
手动启动 oracle 服务
查看>>
如何进行接口测试
查看>>
【SSH网上商城项目实战14】商城首页UI的设计
查看>>
flex里InputText不能输入中文
查看>>
linux 常用命令集锦
查看>>
linux 快捷键
查看>>
vc6.0 简易的tcp网络讲解(二)
查看>>
1135: 零起点学算法42——多组测试数据(求和)IV
查看>>
Code Chef February Challenge 2019题解
查看>>
洛谷P3369 【模板】普通平衡树(FHQ Treap)
查看>>
你那么喜欢看”干货“,是因为你根本不想下功夫。
查看>>
openjdk源码目录结构
查看>>