CCF NOI1000 加密算法

来源:互联网 发布:c语言小游戏源代码 编辑:程序博客网 时间:2024/06/05 02:32

问题链接:CCF NOI1000 加密算法




时间限制: 1000 ms  空间限制: 262144 KB

题目描述

  神龙数码公司设计了一个加密算法:用a代替z,用b代替y,用c代替x,......,用z代替a。现要求输入一个小写字母,对其进行加密输出。

输入

  输入一个小写字母。

输出

  输出加密后的字符。

样例输入

a

样例输出

z

数据范围限制




问题分析

  这是一个编码问题,也是有关输入输出的问题。

程序说明

  有两种解法,一种是计算法,另外一种是查表法。

  因为字符编码采用ASCII码,a-z、A-Z和0-9是顺序连续编码的,计算上十分方便。

  由于本题的编码规则(加密规则)是有规律的,所以采用查表法不如计算法简洁。但是,如果编码没有规律,则查表法的优点是显而易见的。

要点详解

  • 函数getchar()和函数putchar()是标准输入输出函数,其原型定义在stdio.h中。
  • 更加简洁的写法:putchar('a' + 'z' - (c = getchar()));
  • 另外一个更加简洁的写法:putchar(encipher[(c = getchar()) - 'a']);
  • 在C语言中,“=”是运算符,从语义上看是赋值,而从语法上看是运算符,可以像算术运算符一样用在表达式中。
  • 在C语言中数组下标是从0开始的。



100分通过的C语言程序之一:

#include <stdio.h>int main(void){    char c;    c = getchar();    putchar('a' + 'z' - c);    return 0;}


100分通过的C语言程序

#include <stdio.h>int main(void){    char c;    putchar('a' + 'z' - (c = getchar()));    return 0;}


100分通过的C语言程序之二:

#include <stdio.h>int main(void){    char encipher[] = "zyxwvutsrqponmlkjihgfedcba";    char c;    c = getchar();    putchar(encipher[c - 'a']);    return 0;}

100分通过的C语言程序

#include <stdio.h>int main(void){    char encipher[] = "zyxwvutsrqponmlkjihgfedcba";    char c;    putchar(encipher[(c = getchar()) - 'a']);    return 0;}





0 0
原创粉丝点击