C语言 | 将密码译回原文,并输出密码和原文

举报
C语言入门到精通 发表于 2021/02/15 00:08:01 2021/02/15
【摘要】 例66:有一行电文,已按下面规律译成密码:A->Z a->z;B->Y b->y;即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求C语言编程将密码译回原文,并输出密码和原文。 解析: 可以定义一个数组ch,在其中存放电文。如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母,由于此密...

例66:有一行电文,已按下面规律译成密码:A->Z a->z;B->Y b->y;即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求C语言编程将密码译回原文,并输出密码和原文。

解析: 可以定义一个数组ch,在其中存放电文。如果字符ch[j]是大写字母,则它是26个字母中的第(ch[j]-64)个大写字母,由于此密码的规律是对称转换,即第1个字母转换为最后一个字母,最后一个转换为第1个字母,因此从原文译为密码和从密码译为原文,都是同一个公式。

源代码演示:

#include<stdio.h>//头文件 
int main()//主函数 
{
  int j,n;//定义整型变量 
  char ch[80],tran[80];//定义字符数组 
  printf("输入密码:\n");//提示语句 
  gets(ch);//键盘输入 
  printf("\n密码是:\n%s",ch);//密码 
  j=0;//赋初值 
  while(ch[j]!='\0')//不是最后一个字符时 
  { if((ch[j]>='A')&&(ch[j]<='Z'))//ASCII中A对应的值是65,a对应的值是97 
 { tran[j]=155-ch[j]; } else if((ch[j]>='a')&&(ch[j]<='z'))//小写 
 { tran[j]=219-ch[j]; } else { tran[j]=ch[j]; } j++;
  }
  n=j;
  printf("\n输出原文:\n");//提示语句 
  for(j=0;j<n;j++)//遍历输出 
  { putchar(tran[j]);
  } printf("\n");//换行 
  return 0;//函数返回值为0 
}

编译运行结果如下:

输入密码:
C yuyan

密码是:
C yuyan
输出原文:
X bfbzm

--------------------------------
Process exited after 9.542 seconds with return value 0
请按任意键继续. . .

以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~

C语言 | 将密码译回原文,并输出密码和原文 mp.weixin.qq.com

文章来源: zhuanlan.zhihu.com,作者:小林C语言,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/345986442

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。