即第1个字母变成第26个字母,第i个字母变成第26-i+1个字母,非字母字符不变。要求编程序将密码变回原文,并输出密码和原文

有一行电文,已按如下规律译成密码
在这里插入图片描述
即第1个字母变成第26个字母,第i个字母变成第26-i+1个字母,非字母字符不变。要求编程序将密码变回原文,并输出密码和原文。

程序及其注释如下:


// 即第1个字母变成第26个字母,第i个字母变成第26-i+1个字母,非字母字符不变。要求编程序将密码变回原文,并输出密码和原文。

#include<stdio.h>
#include<string.h> 
int main()
{
	//定义一个数组元素全为0、长度为1024的数组 
	char s[1024] = {0};
	
	//输入字符串 
	printf("请输入您需要译回原文的密码:"); 
	
	//将输入的密码赋值给变量x 
	scanf("%s", s);

	//定义一个整型变量表示输入的密码的字符串长度,在译码时索引一个个翻译,直至达到len(如下for循环条件) 
	int len = strlen(s);
	
	//转换
	for (int i = 0; i < len; ++i)
	{
		// 如果是小写字母(大写字母出来类似):
	  	// 1. 先用s[i] - 'a'计算出s[i]是26个字母中从前往后数的第几个
	  	// 2. 再用26 - (s[i]- 'a') - 1 转换为26个字母中从后往前数的第几个
	  	// 3. 在2的结果上加上'a',即转换为对应从后往前的第几个字母
	   if(s[i] >= 'a' && s[i] <= 'z')
	   {
	   		s[i] = 'a' + 26 - (s[i]-'a')-1;
	   }
	   else if (s[i] >= 'A' && s[i] <= 'Z')
	   {
	        s[i] = 'A' + 26 - (s[i] - 'A')-1;
	   } 	   
	}
	printf("您输入的密码的原文为:%s\n", s);
    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是彦歆呀嘻嘻哈哈

你的鼓励将是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值