3 C語言凱撒密碼(有關緩衝區)以及陣列越界問題

2021-08-16 02:42:46 字數 973 閱讀 5207

凱撒密碼(caeser)是羅馬擴張時期朱利斯•凱撒(julius caesar)創造的,用於加密通過信使傳遞的作戰命令。它將字母表中的字母移動一定位置而實現加密。

他的原理很簡單,說到底就是字母與字母之間的替換。每乙個字母按字母表順序向後移3位,如a加密後變成d,b加密後變成e,……x加密後變成a,y加密後變成b,z加密後變成c。

例如:「baidu」用凱撒密碼法加密後字串變為「edlgx」。

試寫乙個演算法,將鍵盤輸入的文字字串(只包含a~z的字元)進行加密後輸出。  

輸入格式:

字串   後面跟乙個回車鍵 

注意這裡用回車鍵作為輸入的結束符號

輸出格式:

字串輸入樣例:

輸出樣例:

edlgx

#include

int main(int argc, const char * argv)

else if ('a'<=p&&p<='z')

else if ('a'<=p&&p<='z')

printf("%c",c);

}while (1);

}if (crypt==0)

else if ('a'<=p&&p<='z')

else if ('a'<=p&&p<='z')

printf("%c",c);

}while (1);

}return 0;

}有關scanf與緩衝區的一切

錯因:1.輸入字元時並不是乙個個輸入的,而是一下子輸完後存入緩衝區

2.當快取區有東西時,scanf會直接從緩衝區讀取

#include int main()
此時陣列越界,因為字串的最後乙個'\0'佔據了i的地方,使得i的值變成了0;

C語言篇 3 緩衝區問題

鍵盤 鍵盤緩衝區 輸入緩衝區 程式 scanf函式 我們在鍵盤上輸入的任何東西,會先進入輸入緩衝區區域,然後程式從輸入緩衝區裡把資料乙個乙個讀出來。輸入緩衝區的管理方式 先進入的數字會被先讀出來 輸入緩衝區裡把前面的數字讀走了,才能讀後面的數字 scanf就是從輸入緩衝區裡拿數字,如果輸入緩衝區的內...

C語言 清空緩衝區

考慮到下面的 includeint main while n 1 return 0 就是輸入乙個數,然後輸出這個數,如果輸入 1 就表示結束。但是如果使用者不小心輸入了乙個字母 或者其他非數字字元,就會發生死迴圈,這是為什麼呢?這是因為scanf函式是從緩衝區讀取乙個指定格式的變數。並且返回成功讀入...

C語言清除輸入緩衝區

在使用scanf輸入時,如果輸入不合法,此時可以檢查其返回值為0,但下次再呼叫時,上次不合法的輸入,還在輸入緩衝區中,此時就會接著不合法,如下 include int main int argc,char argv printf you input is d n id return 0 這樣,如果輸...