7-3 實驗9_9_字串加密 (100分)

滄橙-BUPT發表於2020-12-20

7-3 實驗9_9_字串加密 (100分)

任意給定一個字串,與兩個編碼表,要求對該字串進行加密。字串中只包含大寫字母與小寫字母。編碼表是字母表的一個重新排列,第一個編碼表為大寫字母編碼表,第二個編碼表為小寫字母編碼表。

例如:

字母表為:

(大寫字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ)

(小寫字母表:abcdefghijklmnopqrstuvwxyz)

編碼表為:

(大寫字母編碼表: JKLMQRYZABCISTNOPDGHXEFUVW)

(小寫字母編碼表: bcljakfxpdqweozrsthiymnguv)

編碼表的功能是根據字母在字母表中的序號,把該字母替換成編碼表中相應序號上的字母。

例如,字母‘A’在字母表中序號為1,而大寫字母編碼表中序號為1的是字母‘J’,因此‘A’被編碼為‘J’,而字串“ACDza”將編碼為“JLMvb”。

字串加密過程:

首先把待加密字串中所有的字母改寫成該字母的下一個字母,字母如果為‘Z’或‘z’則分別改寫成字母‘A’或‘a’。然後將新得到的字串根據兩個編碼表進行編碼。編碼後的字串即為結果字串。

輸入與輸出要求: 輸入三個字串,第一個字串為非空的待加密的字串,長度不大於100,該字串中只可能出現大寫字母與小寫字母。第二個字串為大寫字母編碼表,即26個大寫字母,每個大寫字母只能出現一次。第三個字串為小寫字母編碼表,即26個小寫字母,每個小寫字母只能出現一次。輸出結果字串,佔一行。

輸入格式:
三個字串,第一個字串為非空的待加密的字串,長度不大於100,該字串中只可能出現大寫字母與小寫字母。第二個字串為大寫字母編碼表,即26個大寫字母,每個大寫字母只能出現一次。第三個字串為小寫字母編碼表,即26個小寫字母,每個小寫字母只能出現一次。

輸出格式:
結果字串,佔一行。

輸入樣例:

IlovelanguageC
OPDGHSTABNRYZCQJKLMIXEFUVW
hpzaeongxrbcljwtskfymdqiuv

輸出樣例:

NltqolpwgdpgoG
#include<stdio.h>

int main() {
    char a[150];
    char b[150];
    char c[150];
    scanf("%s%s%s",a,b,c);
    int i=0;
    while (a[i]!='\0'){
        if (a[i]=='z'){
            a[i] = 'a';
        }else if (a[i]=='Z'){
            a[i] = 'A';
        }else if (a[i]!='z'&&a[i]!='Z'){
            a[i]++;
        }
        i++;
    }
    i=0;
    int is,si;
    while (a[i]!=0){
        if (a[i]>='A'&&a[i]<='Z'){
            is=a[i]-'A';
            a[i]=b[is];
        }
        if (a[i]>='a'&&a[i]<='z'){
            si=a[i]-'a';
            a[i]=c[si];
        }
        i++;
    }
    printf("%s",a);
    return 0;
}

相關文章