題目:
為使電文保密,往往按一定規律將其轉換成密碼,收報人再根據規律將其譯回原文
解題思路:
我的想法效仿循環隊列的思想,把上圖的圓在代碼中實現成為一個真正的字母表圓,當輸入的字符為w的時候,w的譯文會在這個字母圓中轉為開頭的a
#include<stdio.h> #include<string.h> char change(char before,char begin,char end) { char after=before+4;//首先將當前字符轉為后面第4個 if(after>end)//如果出現溢出這個字母圓的情況,就要對溢出的情況進行處理 { int gap=after-end-1;//求出溢出的間隙大小,例如m+4是91,而a是90,間隙為91-90-1=0 after=begin+gap;//則這個的譯文為a/A+0 } return after; } int main() { char word[]="Wonderful!"; for(int i=0;i<strlen(word);i++){ if(word[i]>='a'&&word[i]<='z') printf("%c",change(word[i],'a','z')); else if(word[i]>='A'&&word[i]<='Z') printf("%c",change(word[i], 'A','Z')); else printf("%c",word[i]); } printf("\n"); }
當然還有簡單的方法,可以直接參考書上,我這里就不再贅述了