1. 程式人生 > >ZZULIOJ 1164: 字串加密

ZZULIOJ 1164: 字串加密

題目描述
輸入一串字元(長度不超過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; }