题目描述
编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即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值溢出后有两种解决方法
-
ASCII值-26
-
取模:ASCII%(起始的值+26个英文字母) a:97,A:65。详见代码中。