模拟----凯撒密码

凯撒密码

题目

恺撒生活在充满危险和阴谋的时代. 恺撒面对的最困难的问题是生存. 为了生存, 他决定创造一种密码. 这种密码听起来难以置信, 如果不知

道方法, 没有人可以破解.

你是恺撒军队的一个上尉. 你的工作是解密消息并将之提供给将军. 密码很简单. 对明文的每个字母右移5个位置以创建密文 (如字母’A’, 密

文是’F’).
有如下对应:

密文
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

明文
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

只有字母需要移位, 其它字符保持不变, 所有字母均是大写.

输入描述
Input
输入为至多100组数据. 每组数据有如下格式, 中间无空行.

一组数据有3部分:

起始行 - 单独一行: “START”
密文 - 单独一行, 包含1到200个字符, 组成恺撒的消息.
结束行 - 单独一行: “END”

最后一组输入是单独一行: “ENDOFINPUT”.

输出描述
Output
对每组数据有一行输出. 即恺撒的原始消息.

样本输入
Input example
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX END START N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOFINPUT
样本输出
Output example
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE

解答

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char A[26]={'V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'};
int i=0;

int CMD();
void START();

int main(){
  int cmd,i=100;
  while(1){
    cmd=CMD();
    if(cmd==-1) break;
    if(cmd==1) START();
  }
  return 0;
}

int CMD(){
  char c[20];
  scanf("%s ",c);
  if(strcmp(c,"START")==0)  return 1;
  if(strcmp(c,"END")==0){
    i++;
    if(i>=100){
      exit(0);
    }
    return 0;
  }
   if(strcmp(c,"ENDOFINPUT")==0) exit(0); 
  return -1;
}

void START(){
  char input;
  while(1){
    input=getchar();
    if(input=='\n') break;
    if(input>=65&&input<=90) printf("%c",A[input-65]);
    else printf("%c",input);
  }
  printf("\n");
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值