hd acm1048
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hd acm1048相关的知识,希望对你有一定的参考价值。
You are a sub captain of Caesar‘s army. It is your job to decipher the messages sent by Caesar and provide to your general. The code is simple. For each letter in a plaintext message, you shift it five places to the right to create the secure message (i.e., if the letter is ‘A‘, the cipher text would be ‘F‘). Since you are creating plain text out of Caesar‘s messages, you will do the opposite:
Cipher text
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
Plain text
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
Only letters are shifted in this cipher. Any non-alphabetical character should remain the same, and all alphabetical characters will be upper case.
A single data set has 3 components:
Start line - A single line, "START"
Cipher message - A single line containing from one to two hundred characters, inclusive, comprising a single message from Caesar
End line - A single line, "END"
Following the final data set will be a single line, "ENDOFINPUT".
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
char cipher[3][200]; //用来存储每一个数据集
int j,k;
while(1)
{
for(j=0;j<3;j++)
{
gets(cipher[j]); //将每行的信息读入到数组中
if(j==1)
{
k=0;
while(cipher[1][k]!=‘\0‘) //破译密文
{
if(cipher[1][k]<‘F‘&&isupper(cipher[1][k]))
cipher[1][k]+=21;
else if(isupper(cipher[1][k]))
cipher[1][k]-=5;
k++;
}
}
}
if(strcmp(cipher[0],"ENDOFINPUT")!=0) puts(cipher[1]); //输出结果
if(strcmp(cipher[0],"ENDOFINPUT")==0) break; //输入结束的标志
}
return 0;
}
以上是关于hd acm1048的主要内容,如果未能解决你的问题,请参考以下文章