CCF 1029資訊加密
阿新 • • 發佈:2018-12-23
1029. 資訊加密 (Standard IO)
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
題目描述
在傳遞資訊的過程中,為了加密,有時需要按一定規則將文字轉換成密文傳送出去。有一種加密規則是這樣的:
1. 對於字母字元,將其轉換成其後的第3個字母。例如:A→D,a→d,X→A,x→a;
2. 對於非字母字元,保持不變。
現在,請你根據輸入的一行字元,輸出其對應的密碼。
輸入
輸入一個字串。
輸出
輸出加密後的字串。
樣例輸入
I(2016)love(08)China(15)!
樣例輸出
L(2016)oryh(08)Fklqd(15)!
資料範圍限制
字串長度不超過100。
問題分析
這個問題是考對ASCII碼錶和char一維陣列的應用。所以,第一個關鍵是把ASCII碼錶找出來,跟問題對照一下就知道怎麼轉換了。大寫字母在65-90之間,但是超過87(W)的就要應用不同的處理方式;小寫字母在97-122之間,但是119(w)也一樣要用不同和處理方式。程式碼如下:
#include <iostream> using namespace std; int main() { int i=0; char a[100]={0},b[100]={0};//字元陣列要先初始化,否則輸出時可能會出現亂碼 gets(a); while(a[i]!='\0')//判斷字串結尾符號 { if(a[i]>=65 && a[i]<=90)//大寫字母 { if(a[i]>=88) b[i] = a[i] - 23;//X,Y,Z else b[i] = a[i] + 3; } else if(a[i]>=97 && a[i]<=122)//小寫字母 { if(a[i]>=120) b[i] = a[i] - 23;//x,y,z else b[i] = a[i] + 3; } else b[i] = a[i]; i++; } printf("%s",b); return 0; }