C語言紅寶書 譚浩強第六章 第12題
阿新 • • 發佈:2018-12-09
【描述】
有一行電文,已按下面規律譯成密碼:
A →Z B→Y C→X ……
a→z b→y c→x ……
即第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母,非字母字元不變。
要求程式設計序將密碼譯回原文,並輸出密碼和原文。
整題的思路非常簡單,就是定義變數,然後取值,迴圈,輸出。
但是難點就在題目的條件,第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母,所以我們這裡需要用到ascii碼的碼值來進行運算
#include<stdio.h> int main() { char str[88]; int i,len; gets(str); //輸入字元陣列 len=strlen(str); //測量字元長度,確定for語句i的迴圈次數,測量字元陣列長度的時候不要加引號,加了引號就變成了測量一個字串 puts(str); //輸出字元陣列 for(i=0;i<len;i++) { if(str[i]>='A'&&str[i]<='Z') str[i] = 27-(str[i]-64)+64; //按照題目的要求,只能用ASCII碼來進行求值,具體可以翻ascii碼錶(網上查或者翻紅寶書後邊皆可) else if(str[i]>='a'&&str[i]<='z') str[i] = 27-(str[i]-96)+96; } puts(str); return 0; }
執行結果如下: