1. 程式人生 > >C語言紅寶書 譚浩強第六章 第12題

C語言紅寶書 譚浩強第六章 第12題

【描述】

有一行電文,已按下面規律譯成密碼:

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;
}

執行結果如下:
在這裡插入圖片描述