凱撒密碼的實現(10分)
題目內容:
凱撒密碼(caeser)是羅馬擴張時期朱利斯?凱撒(Julius Caesar)創造的,用於加密通過信使傳遞的作戰命令。它將字母表中的字母移動一定位置而實現加密。
他的原理很簡單,說到底就是字母與字母之間的替換。每一個字母按字母表順序向后移3位,如a加密后變成d,b加密后變成e,……x加密后變成a,y加密后變成b,z加密后變成c。
例如:“baidu”用凱撒密碼法加密后字符串變為“edlgx”。
試寫一個算法,將鍵盤輸入的文本字符串(只包含a~z的字符)進行加密后輸出。
輸入格式:
字符串 后面跟一個字母”;“
注意這里用英文分號”;“作為輸入的結束符號
輸出格式:
字符串
輸入樣例:
baidu;
輸出樣例:
edlgx
編碼:
#include <stdio.h> #include <string.h> int main() { char passwd[100],encrypted[100]; int i,j,k,t,move=3; scanf("%s;",&passwd); for(i=0; i<strlen(passwd); i++) { if(passwd[i] >= 'a' && passwd[i] <= 'z') { passwd[i] = ((passwd[i]-'a')+move)%26+'a'; }else if(passwd[i]==';') { passwd[i]='\0'; } } printf("%s",passwd); return 0; }
延伸:
#include <stdio.h> #include <string.h> int main() { char passwd[100],encrypted[100]; int i,j,k,t,move; while(1) { printf("Enter message to be encrypted:"); gets(passwd); printf("Enter shift amount(1-25):"); scanf("%d%*c",&move); for(i=0; i<strlen(passwd); i++) { if(passwd[i] >= 'A' && passwd[i] <= 'Z') { passwd[i] = ((passwd[i]-'A')+move)%26+'A'; } else if(passwd[i] >= 'a' && passwd[i] <= 'z') { passwd[i] = ((passwd[i]-'a')+move)%26+'a'; } } printf("%s",passwd); printf("\n"); } return 0; }