字符串應(yīng)用編碼解碼.doc

字符串應(yīng)用編碼解碼.doc

ID:59199015

大?。?6.51 KB

頁數(shù):2頁

時間:2020-10-30

字符串應(yīng)用編碼解碼.doc_第1頁
字符串應(yīng)用編碼解碼.doc_第2頁
資源描述:

《字符串應(yīng)用編碼解碼.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、字符串應(yīng)用:編碼解碼【題目】從鍵盤輸入一個英文句子,設(shè)計一個編碼、解碼程序。編碼過程:先鍵入一個正整數(shù)N(1〈=N〉=26)。這個N決定了轉(zhuǎn)換關(guān)系。例如當(dāng)N=1,輸入的句子為ABCXYZ時,則其轉(zhuǎn)換碼為ABCXYZ不變。當(dāng)N=2時,其轉(zhuǎn)換碼為BCDYZA,其它的非字母字符不變。為使編碼較于破譯,將轉(zhuǎn)換碼的信息自左而右兩兩交換,若最后僅剩單個字符則不換。然后,將一開始表示轉(zhuǎn)換關(guān)系的N根據(jù)ascii表序號化成大寫字母放在最前面。如:abcABCxyzXYZ-/,1.n=3①cdeCDEzabZAB-/,1.{根據(jù)N的值轉(zhuǎn)換}②dcCeEDazZbBA/-1,.{兩兩交換}

2、③CdcCeEDazZbBA/-1,.{最后編碼}解碼過程為編碼的逆過程?!緟⒖汲绦颉縱arone:string;i,what,n,temp,s:integer;temp1:char;beginwriteln('inputyourchoice:');{編碼,解碼過程通過菜單選擇}writeln('1.bianma');{選1,編碼}writeln('2.jiema');{選2,解碼}readln(what);{輸入選擇}writeln('inputastring:');{無論是編碼或是解碼,均要輸入一字符串}readln(one);{讀入字符串到one中}ifwhat

3、=1thenbegin{如果是編碼過程}readln(n);{讀入N}n:=n-1;{根據(jù)題意,要換成N-1,為什么?例如N=1,則字符不變}fori:=1tolength(one)dobegin{字串one從頭到尾編碼}iford(one[i])in[65..90]thenbegin{如為大寫字母}temp:=ord(one[i])+n;{序號先加N}iftemp>90thentemp:=temp-90+64;{超過Z的處理,保證處理后仍為}one[i]:=chr(temp);{大寫字母}end;iford(one[i])in[97..122]thenbegin{如

4、為小寫字母}temp:=ord(one[i])+n;iftemp>122thentemp:=temp-122+96;{超過z的處理,保證為小寫字母}one[i]:=chr(temp);{處理后放回原位置}end;end;s:=ord(one[0]);{S放one字符串長度,用以控制兩兩交換次數(shù)}ifodd(s)thendec(s);{假如是奇數(shù),則減1,保證是偶數(shù)次}i:=1;repeattemp1:=one[i];{以下三句實現(xiàn)前后兩字符的兩兩交換}one[i]:=one[i+1];one[i+1]:=temp1;i:=i+2;{一次便交換兩個字符}untili>=

5、s;{直到字串結(jié)束}write(chr(ord(n+1+64)));{輸出N的對應(yīng)大寫字母}write(one);{輸出編碼后的one字符串}end;?ifwhat=2thenbegin{解碼過程}n:=ord(upcase(one[1]))-64-1;{由one字串的頭一個字符獲取密鑰N}one:=copy(one,2,length(one)-1);{取出N后,one字符串減去第一個字符}s:=ord(one[0]);{以下實現(xiàn)字符串的兩兩交換}ifodd(s)thendec(s);{S控制兩兩交換的次數(shù),保證是偶數(shù)次}i:=1;repeattemp1:=one[i

6、];{前后兩個字符兩兩交換}one[i]:=one[i+1];one[i+1]:=temp1;i:=i+2;untili>=s;{直到字串結(jié)束}fori:=1tolength(one)dobegin{根據(jù)N的值還原字符串}iford(one[i])in[65..90]thenbegin{大寫字母}temp:=ord(one[i])-n;{序號-N}iftemp<65thentemp:=temp+26;{保證在A..Z范圍內(nèi)轉(zhuǎn)換}one[i]:=chr(temp);{轉(zhuǎn)換后放回原處}end;iford(one[i])in[97..122]thenbegin{小寫字母}t

7、emp:=ord(one[i])-n;iftemp<97thentemp:=temp+26;one[i]:=chr(temp);end;end;writeln(one);{輸出解碼后的字符串}end;end.

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。