要将China
译成密码,译码规律是:用原来字母后面的第 444 个字母代替原来的字母。例如,字母A
后面第 444 个字母是E
,E
代替A
。因此,China
应译为Glmre
。请编一程序,用赋初值的方法使 c1,c2,c3,c4,c5 五个变量的值分别为:C
,h
,i
,n
,a
。经过运算,使 c1,c2,c3,c4,c5 分别变为G
,l
,m
,r
,e
,并输出。
输入格式
输入一个长度不大于 10^4 且仅包含英文字母的字符串。
输出格式
输出加密后的字符串。
样例输入
China
样例输出
Glmre
问题链接:JSK-373 加密
问题描述:(略)
问题分析:
这个题是有关密码的问题,本质上就是字符变换(数学上也可以称为映射)。
程序说明:
头文件ctype.h中包含各种字符有关函数的原型,其中一些看似函数的是用宏定义实现的。使用其中的函数,可以使得程序更加易懂并且不易出现BUG。
字符类型也是一种整数,是可以进行算术运算的。目前,几乎所有的计算机语言中字符采用ASCII编码,其中的一个特点是字母和数字是连续编码的,易于计算。
字符输出用函数putchar()实现。
参考链接:(略)
题记:能使用库函数尽量使用库函数。
AC的C语言程序如下:
/* JSK-373 加密 */
#include <stdio.h>
#include <ctype.h>
#define N26 26
#define N 10000
char s[N + 1];
int main(void)
{
scanf("%s", s);
int i;
for(i = 0; s[i]; i++) {
if(isupper(s[i]))
putchar('A' + (s[i] - 'A' + 4) % N26);
else if(islower(s[i]))
putchar('a' + (s[i] - 'a' + 4) % N26);
else
putchar(s[i]);
}
putchar('\n');
return 0;
}