NWAFU-OJ(基础)12.简单加密程序

题目描述

由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。

输入

一串字符

输出

加密后的字符串

样例输入

ab12CDxyz

样例输出

cd12EFzab

题目分析:

对这串字符串作个遍历,遇到大小写字母了,开始作处理:

%取余操作常用于字符的循环,例如假设a字符的ascii码值是32,想要前33个字符构成一个循环,a向右移动两个位置,要求还在循环里,这时候a的下标就要变成(a+2)%33=1  (循环中下标从0开始)

 1.先把字符的值转化成0-25之间的数值,方便进行取余操作

对应代码:‘c-'a'    (c-'A')   c表示字符变量,注意啊,以下的操作都是在减去‘a’的ascii码值的基础上操作,并不代表真正的ascii码值!!!

 2.然后进行加2操作,向右移动两位,以y这个字符为例:

假设c-'a'=24对应的字符为y

除了末尾的几个字符出现这种情况外,而其它字符都不会出现这种情况,比如23再进行如下操作还是23.

3.c-'a'+2后变成了26,显然不在我们的循环中,所以进行取余(c-'a'+2)%26,结果为0,就对应这0位置的字符的下标,就是字符a,但是我们知道0显然不是a的ASCII码值,需要再加上‘a’,用来归位。

代码实现:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[10000];
	gets(a);
	//scanf("%s",a);
	for(int i=0;i<strlen(a);i++)
	{
		if(a[i]>='A'&&a[i]<='Z')
		{
			a[i]=(a[i]+2-'A')%26+'A';
		}
		else if(a[i]>='a'&&a[i]<='z')
		{
			a[i]=(a[i]+2-'a')%26+'a';
		}
		else
		continue;
	}
	puts(a);
	return 0;
}

在循环中,break语句用于结束循环,continue表示跳过本次循环,还可以执行下一次循环。

值得注意的是,当我们使用puts语句时,我们会发现,多一个空行,puts会在字符串后加一个\n进行输出。

运行结果:

 欢迎批评指正!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数字漫游者

力图简洁c++,创作不易,谢谢

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

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

打赏作者

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

抵扣说明:

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

余额充值