Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2539020
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-05 14:27:57

有一段电文,根据下面规律译成密码:
A -> Z    a -> z
B -> Y    b -> y
C -> X    c -> x
  .          .
  .          .
  .          .
Z -> A    z -> a
非字母字符,不进行译码。要求编程序将明文译成密文,然后再由译码译成明文。
字符分析,你会发现,其中的规律。大写最终译成的还是大写,小写最终还是译成了小写。其他字符不改变。我们可以发现明文字符和密文字符的和是不变的。我们很快可以计算到:
大写的 明文 + 密文 = 155;小写的 明文 + 密文 = 219;根据此原理,编写如下代码:
 

#include <stdio.h>
#define N 100

char convert(char);
int main(int argc, int *argv[])
{
    char str0[N],str1[N],str2[N];
    char c;
    int i;
    
    printf("plese input proclaimed in writing:");
    gets(str0);
    
    printf("the cryptograph is :");
    for (i = 0 ; i <= strlen(str0); i++)
    {
        str1[i] = convert(str0[i]);
    }
    puts(str1);
    
    printf("the resolve cryptograph is :");
    for (i = 0 ; i <= strlen(str1); i++)
    {
        str2[i] = convert(str1[i]);
    }
    puts(str2);
    
    system("pause");
}

char convert(char c)
{
     char c_convert ;
     if (c >= 'A' && c <= 'Z')
     {
           c_convert = 155 - c;
     }
     else if (c >= 'a' && c <= 'z')
     {
          c_convert = 219 - c;
     }
     else
     {
         c_convert = c;
     }
     return c_convert;
}


阅读(1096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~