開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
string.h
問題(Question):
我正在作練習題 題目是這樣的
第二次世界大戰中,德軍的通訊編碼被美國破解,以致於機密被美國竊聽而慘敗。德軍的
編碼規則(假)如下:將訊息每個字母往後推兩位再傳出去,例如 A→C、B→D,而後面的
Y→A、Z→B,所有的訊息都是大寫字母。而收到訊息的則是將每個字母往前推兩位,例
如 C→A、D→B,而前面的 A→Y、B→Z。假設你是美軍的情報軍,要快速編碼及解碼德軍
的訊息,希望完成一個程式,第一個字元為 + 代表要編碼,第一個字元為 - 代表要解碼
,程式執行如下(粉紅色為輸入、淺藍色為輸出):
目前輸出的時候雖然可以成功輸出可是卻會出現一堆奇怪的東西
餵入的資料(Input):
+ABCD
預期的正確結果(Expected Output):
CDEF
錯誤結果(Wrong Output):
拍照上傳了
http://imgur.com/jESJ9AW
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <string.h>
/* run this program using the console pauser or add your own getch,
system("pause") or input loop */
int main() {
int i;
char code[80];
gets(code);
if(code[0]=='+')
{
for(i=1;i<=strlen(code);i++)
{
code[i]=code[i]+2;
if(code[i]>'Z') code[i]=code[i]-26;
}
}
if(code[0]=='-')
{
for(i=1;i<=strlen(code);i++)
{
code[i]=code[i]+2;
if(code[i]<'A') code[i]=code[i]+26;
}
}
printf("%s \n",code+1);
}
補充說明(Supplement):
我是新手
用範例的程式碼就沒問題 不曉得問題出在哪