ZZULIOJ 1164: 字串加密
阿新 • • 發佈:2018-11-30
題目描述
輸入一串字元(長度不超過100)和一個正整數k,將其中的英文字母加密並輸出加密後的字串,非英文字母不變。加密思想:將每個字母c加一個序數k,即用它後面的第k個字母代替,變換公式:c=c+k。如果字母為z,則後一個字母是a,也就是字母字元形成一個圓。
輸入
輸入第一行是若干字元,以回車結束。輸入第二行是一個整數k,k是int範圍內的正整數;
輸出
輸出加密後的字串。
樣例輸入12kjsdZjk
280
樣例輸出12edmxTde
提示
注意,即使通過模運算把k控制在小於26的範圍內,依然要考慮char型別溢位的問題,如’z’ + 10也會超出char的表示範圍。但慶幸的是,我們只需要考慮向記憶體儲存時的char型別溢位,而在計算過程中不會溢位,因為計算過程中char會被提升為int型別。
#include<stdio.h>
#include<string.h>
int main(){
int i,k;
char a[110];
gets(a);
scanf("%d",&k);
int len=strlen(a);
int n=k%26;
for(i=0;i<len;i++){
if(a[i]>='a'&&a[i]<='z')
a[i]=(a[i]-'a'+26+n)%26+'a';
if(a[i]>='A'&&a[i]<='Z')
a[i]=(a[ i]-'A'+26+n)%26+'A';
}
puts(a);
return 0;
}