编程题:有一行电文,已按下面规律译成密码:A->Z B->Y C->X ...
a->z b->y c->x ..即第一个字母编成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。编程输出密码和原文。
#include "stdio.h"
#include "string.h"
void main()
{
//printf("%d,%d,%d,%d\n",‘A‘,‘Z‘,‘a‘,‘z‘);
int i;
char s1[50],s2[50];//定义长度为50的字符串数组分别用于存储密文和原文
printf("请输入密文:");
scanf("%s",s1);//接收用户输入的密文
for(i=0;i<strlen(s1);i++)
{
if(s1[i]>=65&&s1[i]<=90)//根据ASCII值判断是否是大写字母
{
s2[i]=((s1[i]-65)+25)%26+65;//将大写字母变为其后面的第25个
}
else if(s1[i]>=97&&s1[i]<=122)//根据ASCII值判断是否是小写字母
{
s2[i]=((s1[i]-97)+25)%26+97;////将小写字母变为其后面的第25个
}
else
{
s2[i]=s1[i];//不是字母的保持不变
}
}
printf("%s",s2);//输出原文
}
运行结果:
本文出自 “努力奋斗,互相提高” 博客,请务必保留此出处http://c10086.blog.51cto.com/6433044/1413838
原文地址:http://c10086.blog.51cto.com/6433044/1413838