加密算法

128 阅读1分钟

题目描述

编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即A->D、B->E、 C->F、......、Y->B、Z->C。小写字母同上,其他字符不做转化。输入任意字符串,输出加密后的结果。

例如:输入"I love 007",输出"L oryh 007"

输入描述

输入一行字符串,长度小于100。

输出描述

输出加密之后的结果。

示例

输入:I Love 007
输出:L oryh 007

思路

  • 定义一个字符数组,将一组字符串存进去。

  • 利用for循环遍历数组,若为大小写字母,则分别+3;若溢出,则-26或对字符取模。其余字符不改变。

  • 最后输出字符数组即可。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
    char a[100];
    gets(a);
    int la = strlen(a);
    for(int i=0; i<la; i++){
	if(a[i]>='a' && a[i]<='z'){ //判断小写 
            a[i]+=3;
            if(a[i]>'z') a[i]-=26; //溢出判断 或a[i]%=123; a:97+26个字母
	}else if(a[i]>='A' && a[i]<='Z'){ //判断大写 
            a[i]+=3;
            if(a[i]>'Z') a[i]-=26; //溢出判断 或a[i]%=91; A:65+26个字母
	}
	else continue; //除字母外的其余字符不改变 
    }
    for(int j=0; j<la; j++)
	cout<<a[j];
    return 0;
} 

小结

continue和break区别

  • continue只结束本次循环,而不是终止整个循环的执行。针对for、while。

  • break结束整个循环过程。针对for、while、which。

字母的ASCII值溢出后有两种解决方法

  1. ASCII值-26

  2. 取模:ASCII%(起始的值+26个英文字母) a:97,A:65。详见代码中。