ACM 1171
阿新 • • 發佈:2018-10-31
為使電文保密,往往按照一定的規律將其轉換成密碼,
收報人再按照約定的規律將其譯成原文。例如,
某次發報時採用的密碼規律為:
將字母A變成字母E,a變成e,即變成其後的第4個字母,
W(w)變成A(a),X(x)變成B(b), Y(y)變成C©,Z(z)變成D(d),
其規律如下圖所示:
字母按照此規律轉換,非字母字元保持原狀不變,如:
China!按此規律將轉換為Glmre!
要求從鍵盤輸入一行字元,輸出其相應的密碼。
輸入 可以包含空格等特殊符號的一行字元(以回車結束)。
輸出 加密後的字元序列,末尾輸出換行。
樣例輸入 China!
譚浩強c紅寶書解法 但是這種解法在一些判定裡會顯示輸出超限
#include<stdio.h> int main() { char c; c= getchar(); //取值字元 while (c!='\n') //當沒有輸出換行符,也就是沒打空格時,可以一直輸入這個 { if (c>='a'&&c<='z'||(c>='A'&&c<='Z')) //當c時字母時 { if(c>='a'&&c<='v'||c>='A'&&c<='A') c=c+4; //當c屬於a~v區間時,其ascii碼+4,即可實現變換 else c=c-22; //當c屬於w~y區間時,其ASCII碼需要減22才能達到要求,否則會變成其他字元,詳情看後邊的ascii碼錶 } printf("%c",c); //輸出 c=getchar(); //繼續取字元 } printf("\n"); return 0; }
簡單粗暴解法
#include<stdio.h> int main() { char c; while(scanf("%c",&c)!=EOF) //不斷取值就使用(!=EOF)這個條件 { if ((c>='A'&&c<'W')||(c>='a'&&c<='w')) c=c+4; //條件一定得是字母,所以if和else if都加了條件 else if ((c>='W')&&(c<='Z')&&(c>='w'&&c<='z'))c=c-22; printf("%c",c); } printf("\n"); return 0; }