ZAMYLA陳:恭喜 整理你的 C程序中的第一對夫婦。 我知道你的第一次進軍 C語法可以艱鉅。 但我向你保證,在年底 當然,你能看的 第一對夫婦的分配和 他們在幾分鐘內完成。 現在,你越來越熟悉 語法,讓我們的凱撒。 在凱撒,用戶將提交 作為一個命令行的整數鍵 參數,然後進入一個純 短信提示。 該方案將加密被 文本和打印 他們的密文消息。 凱撒加密 其實很簡單。 每個字母移位,在他們的 純文本的關鍵。 其結果是,它也 相當不安全的。 但是在執行凱撒將推出 我們到ASCIIMath和數組數據 結構。 我們會得到更複雜 密碼後。 隨著凱撒鍵2,字母A 純文本將代表 密文的字母C,因為C 後,A,B兩個字母 D和C表示E.走向 字母表末尾,W是 X,Y三種由Z.不過Y表示的 沒有後兩個字母,所以 字母表密碼環繞。 因此,Y在純文本代表的 A的密文,和Z B.它可 幫查看凱撒徽,像 一個連續的字母輪。 加密被自己的文字,用戶 將進入兩個參數 進入命令行模式 - /凱撒接著是密鑰。 與往常一樣,我們不能信任用戶 完全輸入,使 意義上我們的節目。 因此,我們將不得不以驗證他們的 命令行輸入。 使用int主要無效,而是我們 使用int為主,INT ARGC,串argv的。 整型變量的argc代表 傳入的參數的數量 在命令行中。 和argv是一個數組,或者認為它是 列表中的參數傳遞進來 因此,凱撒,我們怎麼驗證 用戶的輸入? 那麼,他們應該只進入 兩個命令行參數 - /凱撒和一把鑰匙。 因此,如果argc是2,這意味著 他們要么忘記了一個關鍵,只是 輸入。/凱撒,或者他們 輸入了多個鍵。 如果是這樣的話,那麼你會 要打印的說明 退出程序。 他們將需要再次嘗試 在命令行。 但是,即使argc是2,你會 需要檢查他們是否 給你一個有效的密鑰。 對於凱撒,你需要一個整數。 但argv是一個字符串數組。 您如何訪問該鍵? 就讓我們來看看在陣列 - 數據結構有多個 值相同的數據類型。 文章索引從零開始,這意味著 第一個元素是該指數為零 最後一個元素是索引大小 減1,其中的大小是多少 數組中的元素。 如果我宣布一個新的字符串數組郵箱 長度為3,在視覺上,它 看起來是這樣的。 三個貨櫃的字符串 ,相映成趣。 要訪問任何元素,你鍵入的名字 數組,然後指出 在方括號中的索引。 在這裡,我將值分配給每個 元素,就像我會做任何 其他字符串變量。 因此,訪問我們的命令行參數, 所有我們需要做的是訪問 正確的argv數組元素。 如果用戶輸入/升空隊 火箭到終端中,argv 0 /升空。 argv的團隊, ARG2將火箭。 現在,我們可以訪問我們的關鍵, 我們仍然需要 確保它是正確的。 我們需要將它轉換成一個整數。 但我們不能只投像 我們以前做過的。 幸運的是,在A到Y函數負責 這為我們甚至返回0 如果不能轉換的字符串 成一個整數。 這是給你,雖然,告訴 用戶為什麼你不會 讓程序繼續進行。 在的結果存放到Y 整數,你有你的關鍵。 接下來的部分是簡單的。 提示用戶為他們的樸素的文字, 這將是數據類型的字符串。 幸運的是,所有的用戶輸入 字符串都是有效的。 現在我們已經有了所有必要的輸入 從用戶,是時候為我們 加密被他們的消息。 凱撒的概念很簡單 有足夠的了解。 但你的電腦是如何知道哪些 字母後另一個? 這裡就是ASCII表的用武之地。 每個字符都有一個整數 與它相關聯的數量。 資本A是65。 資本B是66。 小寫a是97。 小寫b是98。 但文字並不局限於 只是字母數字。 例如,@符號 是ASCII數字64。 在處理整個字符串, 讓我們假裝我們只是必須轉移 一個字符。 好了,我們只是想轉移實際 在純文本的信件,不 字符或數字。 所以,首先,我們將要 檢查字符是否是 字母表。 該功能因而isalpha這 我們並返回一個布爾 - 如此,如果字符是字母, 虛假,否則。 兩個其他有用的功能 isupper及islower的的,與 不言自明的名稱。 他們返回true,如果給定的字符 是大寫或小寫, 分別 由於他們是布爾值,他們 有用的使用條件。 如果返回true,因而isalpha,你需要 轉移的關鍵字符。 所以,讓我們打開ASCIIMath 並做一些ASCII數學。 用法很類似的用法 凱撒和需要的關鍵在 命令行。 如果我運行ASCIIMath 5,這似乎增加 5,給我的一封信,F, 顯示的ASCII值。 所以,讓我們來看看在節目。 你可能不知道,就在這裡,為什麼 信是一個整數,當它的 清楚,很好,一個字母。 事實證明,字符和 整數是可以互換的。 通過把字母A在單 引號,整數可以存儲 資本的ASCII值 A.要小心,雖然。 您需要單一的衣服。 如果沒有單引號, 編譯器會尋找一個變量 命名為A,而不是字符。 然後我一封信和一把鑰匙,存儲 int變量結果的總和。 儘管結果的數據類型為 整數,我的printf語句使用 %C字符佔位符。 因此,程序打印字符 與整數結果。 因為我們打印的整數 以及使用%d的形式,我們看到 的數量為好。 所以,現在你可以看到,我們 治療字符和 整數,反之亦然。 讓我們測試出ASCIIMath幾 多次使用作為密鑰25。 我們得到字母z。 現在我們試著26。 我們想要得到的字母a,但 相反,我們得到了一個左括號。 所以,很顯然,只需添加 信的關鍵不會做。 我們需要找出一個公式來包裝 周圍的字母,喜​​歡我們 例如,在開始做了。 凱撒的公式 移位如下。 Ç等於P加K模26。 請記住,模是一種有用的 操作,讓我們其餘 將一個由其他。 讓我們套用這個公式平原 文本信2的一個關鍵。 y的ASCII值89, 為我們提供了模數26 91 相當於13 - 絕對不是ASCII值 的,這是67。 現在我的幽默和遠離 ASCII值字母索引 其中A是零和Z是25, 這意味著,Y為24。 24加2,模6,給了我們26 模26,0,這是 字母索引的。 因此,這個公式似乎適用於 字母索引信 不是其ASCII值。 但你開始用ASCII值。 打印密文字符, 你需要它的ASCII值。 這是給你的,那麼,要弄清楚 如何來回切換。 一旦你找出正確的公式 一個字符,所有你需要做的 適用相同的公式每 純文本的信件 - 如果這封信是按字母順序排列的, 當然。 請記住,你需要保留 的情況下,上層或下層,這就是 的isUpper和isLower功能 前面提到會派上用場。 您可能有兩個公式 - 其中一個為大寫字母 和一個小寫。 所以isUpper一個isLower將幫助您 確定的公式來套用。 你怎麼到每一個應用公式 在一個字符串中的單個字符? 嗯,只是一個字符串 字符數組。 所以,你可以訪問每個字符 分組在中的每個字符 在fo​​r循環中的字符串。 至於你循環的條件, strlen函數,字符串 長度,會派上用場。 這需要在一個字符串作為輸入,並 返回該字符串的長度。 請一定要包括正確的庫 使用字符串長度功能。 你有你的密文。 我的名字Zamyla。 [漢化代碼]。