1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA陳:恭喜 整理你的 3 00:00:11,270 --> 00:00:13,200 C程序中的第一對夫婦。 4 00:00:13,200 --> 00:00:16,379 我知道你的第一次進軍 C語法可以艱鉅。 5 00:00:16,379 --> 00:00:20,060 但我向你保證,在年底 當然,你能看的 6 00:00:20,060 --> 00:00:23,870 第一對夫婦的分配和 他們在幾分鐘內完成。 7 00:00:23,870 --> 00:00:27,830 >> 現在,你越來越熟悉 語法,讓我們的凱撒。 8 00:00:27,830 --> 00:00:31,720 在凱撒,用戶將提交 作為一個命令行的整數鍵 9 00:00:31,720 --> 00:00:35,300 參數,然後進入一個純 短信提示。 10 00:00:35,300 --> 00:00:38,050 該方案將加密被 文本和打印 11 00:00:38,050 --> 00:00:40,020 他們的密文消息。 12 00:00:40,020 --> 00:00:42,980 >> 凱撒加密 其實很簡單。 13 00:00:42,980 --> 00:00:46,455 每個字母移位,在他們的 純文本的關鍵。 14 00:00:46,455 --> 00:00:49,220 其結果是,它也 相當不安全的。 15 00:00:49,220 --> 00:00:53,850 但是在執行凱撒將推出 我們到ASCIIMath和數組數據 16 00:00:53,850 --> 00:00:54,460 結構。 17 00:00:54,460 --> 00:00:57,510 我們會得到更複雜 密碼後。 18 00:00:57,510 --> 00:01:01,680 隨著凱撒鍵2,字母A 純文本將代表 19 00:01:01,680 --> 00:01:07,580 密文的字母C,因為C 後,A,B兩個字母 20 00:01:07,580 --> 00:01:12,450 D和C表示E.走向 字母表末尾,W是 21 00:01:12,450 --> 00:01:18,550 X,Y三種由Z.不過Y表示的 沒有後兩個字母,所以 22 00:01:18,550 --> 00:01:21,070 字母表密碼環繞。 23 00:01:21,070 --> 00:01:27,190 因此,Y在純文本代表的 A的密文,和Z B.它可 24 00:01:27,190 --> 00:01:32,080 幫查看凱撒徽,像 一個連續的字母輪。 25 00:01:32,080 --> 00:01:35,760 >> 加密被自己的文字,用戶 將進入兩個參數 26 00:01:35,760 --> 00:01:37,090 進入命令行模式 - 27 00:01:37,090 --> 00:01:40,010 /凱撒接著是密鑰。 28 00:01:40,010 --> 00:01:44,710 與往常一樣,我們不能信任用戶 完全輸入,使 29 00:01:44,710 --> 00:01:45,800 意義上我們的節目。 30 00:01:45,800 --> 00:01:50,670 因此,我們將不得不以驗證他們的 命令行輸入。 31 00:01:50,670 --> 00:01:57,285 >> 使用int主要無效,而是我們 使用int為主,INT ARGC,串argv的。 32 00:01:57,285 --> 00:02:01,730 整型變量的argc代表 傳入的參數的數量 33 00:02:01,730 --> 00:02:02,880 在命令行中。 34 00:02:02,880 --> 00:02:09,070 和argv是一個數組,或者認為它是 列表中的參數傳遞進來 35 00:02:09,070 --> 00:02:12,000 >> 因此,凱撒,我們怎麼驗證 用戶的輸入? 36 00:02:12,000 --> 00:02:15,870 那麼,他們應該只進入 兩個命令行參數 - 37 00:02:15,870 --> 00:02:18,150 /凱撒和一把鑰匙。 38 00:02:18,150 --> 00:02:22,340 因此,如果argc是2,這意味著 他們要么忘記了一個關鍵,只是 39 00:02:22,340 --> 00:02:27,230 輸入。/凱撒,或者他們 輸入了多個鍵。 40 00:02:27,230 --> 00:02:29,770 >> 如果是這樣的話,那麼你會 要打印的說明 41 00:02:29,770 --> 00:02:30,910 退出程序。 42 00:02:30,910 --> 00:02:34,320 他們將需要再次嘗試 在命令行。 43 00:02:34,320 --> 00:02:37,430 但是,即使argc是2,你會 需要檢查他們是否 44 00:02:37,430 --> 00:02:39,100 給你一個有效的密鑰。 45 00:02:39,100 --> 00:02:40,730 對於凱撒,你需要一個整數。 46 00:02:40,730 --> 00:02:43,260 但argv是一個字符串數組。 47 00:02:43,260 --> 00:02:46,490 您如何訪問該鍵? 48 00:02:46,490 --> 00:02:47,850 >> 就讓我們來看看在陣列 - 49 00:02:47,850 --> 00:02:51,410 數據結構有多個 值相同的數據類型。 50 00:02:51,410 --> 00:02:55,350 文章索引從零開始,這意味著 第一個元素是該指數為零 51 00:02:55,350 --> 00:03:00,260 最後一個元素是索引大小 減1,其中的大小是多少 52 00:03:00,260 --> 00:03:02,850 數組中的元素。 53 00:03:02,850 --> 00:03:07,380 >> 如果我宣布一個新的字符串數組郵箱 長度為3,在視覺上,它 54 00:03:07,380 --> 00:03:08,570 看起來是這樣的。 55 00:03:08,570 --> 00:03:11,520 三個貨櫃的字符串 ,相映成趣。 56 00:03:11,520 --> 00:03:15,445 要訪問任何元素,你鍵入的名字 數組,然後指出 57 00:03:15,445 --> 00:03:18,080 在方括號中的索引。 58 00:03:18,080 --> 00:03:21,610 在這裡,我將值分配給每個 元素,就像我會做任何 59 00:03:21,610 --> 00:03:24,310 其他字符串變量。 60 00:03:24,310 --> 00:03:29,020 >> 因此,訪問我們的命令行參數, 所有我們需要做的是訪問 61 00:03:29,020 --> 00:03:31,690 正確的argv數組元素。 62 00:03:31,690 --> 00:03:37,360 如果用戶輸入/升空隊 火箭到終端中,argv 0 63 00:03:37,360 --> 00:03:38,950 /升空。 64 00:03:38,950 --> 00:03:45,010 argv的團隊, ARG2將火箭。 65 00:03:45,010 --> 00:03:47,670 >> 現在,我們可以訪問我們的關鍵, 我們仍然需要 66 00:03:47,670 --> 00:03:49,040 確保它是正確的。 67 00:03:49,040 --> 00:03:51,060 我們需要將它轉換成一個整數。 68 00:03:51,060 --> 00:03:54,680 但我們不能只投像 我們以前做過的。 69 00:03:54,680 --> 00:03:58,800 幸運的是,在A到Y函數負責 這為我們甚至返回0 70 00:03:58,800 --> 00:04:02,110 如果不能轉換的字符串 成一個整數。 71 00:04:02,110 --> 00:04:04,450 這是給你,雖然,告訴 用戶為什麼你不會 72 00:04:04,450 --> 00:04:06,220 讓程序繼續進行。 73 00:04:06,220 --> 00:04:10,710 在的結果存放到Y 整數,你有你的關鍵。 74 00:04:10,710 --> 00:04:12,070 接下來的部分是簡單的。 75 00:04:12,070 --> 00:04:15,940 提示用戶為他們的樸素的文字, 這將是數據類型的字符串。 76 00:04:15,940 --> 00:04:18,339 幸運的是,所有的用戶輸入 字符串都是有效的。 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> 現在我們已經有了所有必要的輸入 從用戶,是時候為我們 79 00:04:24,760 --> 00:04:26,520 加密被他們的消息。 80 00:04:26,520 --> 00:04:29,200 凱撒的概念很簡單 有足夠的了解。 81 00:04:29,200 --> 00:04:33,750 但你的電腦是如何知道哪些 字母後另一個? 82 00:04:33,750 --> 00:04:36,100 >> 這裡就是ASCII表的用武之地。 83 00:04:36,100 --> 00:04:39,420 每個字符都有一個整數 與它相關聯的數量。 84 00:04:39,420 --> 00:04:41,380 資本A是65。 85 00:04:41,380 --> 00:04:43,310 資本B是66。 86 00:04:43,310 --> 00:04:45,260 小寫a是97。 87 00:04:45,260 --> 00:04:47,590 小寫b是98。 88 00:04:47,590 --> 00:04:50,770 但文字並不局限於 只是字母數字。 89 00:04:50,770 --> 00:04:56,020 例如,@符號 是ASCII數字64。 90 00:04:56,020 --> 00:04:59,690 >> 在處理整個字符串, 讓我們假裝我們只是必須轉移 91 00:04:59,690 --> 00:05:01,220 一個字符。 92 00:05:01,220 --> 00:05:04,640 好了,我們只是想轉移實際 在純文本的信件,不 93 00:05:04,640 --> 00:05:06,020 字符或數字。 94 00:05:06,020 --> 00:05:09,100 所以,首先,我們將要 檢查字符是否是 95 00:05:09,100 --> 00:05:10,430 字母表。 96 00:05:10,430 --> 00:05:14,460 >> 該功能因而isalpha這 我們並返回一個布爾 - 97 00:05:14,460 --> 00:05:18,570 如此,如果字符是字母, 虛假,否則。 98 00:05:18,570 --> 00:05:22,270 兩個其他有用的功能 isupper及islower的的,與 99 00:05:22,270 --> 00:05:23,860 不言自明的名稱。 100 00:05:23,860 --> 00:05:27,370 他們返回true,如果給定的字符 是大寫或小寫, 101 00:05:27,370 --> 00:05:28,740 分別 102 00:05:28,740 --> 00:05:33,770 由於他們是布爾值,他們 有用的使用條件。 103 00:05:33,770 --> 00:05:38,310 >> 如果返回true,因而isalpha,你需要 轉移的關鍵字符。 104 00:05:38,310 --> 00:05:43,750 所以,讓我們打開ASCIIMath 並做一些ASCII數學。 105 00:05:43,750 --> 00:05:48,700 用法很類似的用法 凱撒和需要的關鍵在 106 00:05:48,700 --> 00:05:50,870 命令行。 107 00:05:50,870 --> 00:05:59,590 >> 如果我運行ASCIIMath 5,這似乎增加 5,給我的一封信,F, 108 00:05:59,590 --> 00:06:01,260 顯示的ASCII值。 109 00:06:01,260 --> 00:06:04,090 所以,讓我們來看看在節目。 110 00:06:04,090 --> 00:06:11,820 >> 你可能不知道,就在這裡,為什麼 信是一個整數,當它的 111 00:06:11,820 --> 00:06:14,330 清楚,很好,一個字母。 112 00:06:14,330 --> 00:06:17,690 事實證明,字符和 整數是可以互換的。 113 00:06:17,690 --> 00:06:21,730 通過把字母A在單 引號,整數可以存儲 114 00:06:21,730 --> 00:06:25,390 資本的ASCII值 A.要小心,雖然。 115 00:06:25,390 --> 00:06:27,150 您需要單一的衣服。 116 00:06:27,150 --> 00:06:31,260 如果沒有單引號, 編譯器會尋找一個變量 117 00:06:31,260 --> 00:06:35,510 命名為A,而不是字符。 118 00:06:35,510 --> 00:06:42,140 >> 然後我一封信和一把鑰匙,存儲 int變量結果的總和。 119 00:06:42,140 --> 00:06:47,740 儘管結果的數據類型為 整數,我的printf語句使用 120 00:06:47,740 --> 00:06:50,370 %C字符佔位符。 121 00:06:50,370 --> 00:06:54,530 因此,程序打印字符 與整數結果。 122 00:06:54,530 --> 00:07:00,400 因為我們打印的整數 以及使用%d的形式,我們看到 123 00:07:00,400 --> 00:07:02,110 的數量為好。 124 00:07:02,110 --> 00:07:04,450 所以,現在你可以看到,我們 治療字符和 125 00:07:04,450 --> 00:07:06,980 整數,反之亦然。 126 00:07:06,980 --> 00:07:12,205 >> 讓我們測試出ASCIIMath幾 多次使用作為密鑰25。 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 我們得到字母z。 129 00:07:17,090 --> 00:07:19,750 現在我們試著26。 130 00:07:19,750 --> 00:07:25,600 我們想要得到的字母a,但 相反,我們得到了一個左括號。 131 00:07:25,600 --> 00:07:29,490 所以,很顯然,只需添加 信的關鍵不會做。 132 00:07:29,490 --> 00:07:32,780 我們需要找出一個公式來包裝 周圍的字母,喜​​歡我們 133 00:07:32,780 --> 00:07:34,570 例如,在開始做了。 134 00:07:34,570 --> 00:07:38,520 >> 凱撒的公式 移位如下。 135 00:07:38,520 --> 00:07:42,750 Ç等於P加K模26。 136 00:07:42,750 --> 00:07:46,040 請記住,模是一種有用的 操作,讓我們其餘 137 00:07:46,040 --> 00:07:49,880 將一個由其他。 138 00:07:49,880 --> 00:07:54,870 讓我們套用這個公式平原 文本信2的一個關鍵。 139 00:07:54,870 --> 00:08:01,810 y的ASCII值89, 為我們提供了模數26 91 140 00:08:01,810 --> 00:08:03,690 相當於13 - 141 00:08:03,690 --> 00:08:08,740 絕對不是ASCII值 的,這是67。 142 00:08:08,740 --> 00:08:12,810 >> 現在我的幽默和遠離 ASCII值字母索引 143 00:08:12,810 --> 00:08:18,690 其中A是零和Z是25, 這意味著,Y為24。 144 00:08:18,690 --> 00:08:25,830 24加2,模6,給了我們26 模26,0,這是 145 00:08:25,830 --> 00:08:28,170 字母索引的。 146 00:08:28,170 --> 00:08:32,980 因此,這個公式似乎適用於 字母索引信 147 00:08:32,980 --> 00:08:34,960 不是其ASCII值。 148 00:08:34,960 --> 00:08:37,630 >> 但你開始用ASCII值。 149 00:08:37,630 --> 00:08:41,650 打印密文字符, 你需要它的ASCII值。 150 00:08:41,650 --> 00:08:46,400 這是給你的,那麼,要弄清楚 如何來回切換。 151 00:08:46,400 --> 00:08:49,850 >> 一旦你找出正確的公式 一個字符,所有你需要做的 152 00:08:49,850 --> 00:08:53,520 適用相同的公式每 純文本的信件 - 153 00:08:53,520 --> 00:08:57,720 如果這封信是按字母順序排列的, 當然。 154 00:08:57,720 --> 00:09:02,360 請記住,你需要保留 的情況下,上層或下層,這就是 155 00:09:02,360 --> 00:09:06,890 的isUpper和isLower功能 前面提到會派上用場。 156 00:09:06,890 --> 00:09:08,830 您可能有兩個公式 - 157 00:09:08,830 --> 00:09:11,680 其中一個為大寫字母 和一個小寫。 158 00:09:11,680 --> 00:09:18,420 所以isUpper一個isLower將幫助您 確定的公式來套用。 159 00:09:18,420 --> 00:09:22,460 >> 你怎麼到每一個應用公式 在一個字符串中的單個字符? 160 00:09:22,460 --> 00:09:25,910 嗯,只是一個字符串 字符數組。 161 00:09:25,910 --> 00:09:31,150 所以,你可以訪問每個字符 分組在中的每個字符 162 00:09:31,150 --> 00:09:33,450 在fo​​r循環中的字符串。 163 00:09:33,450 --> 00:09:37,550 至於你循環的條件, strlen函數,字符串 164 00:09:37,550 --> 00:09:39,280 長度,會派上用場。 165 00:09:39,280 --> 00:09:44,020 這需要在一個字符串作為輸入,並 返回該字符串的長度。 166 00:09:44,020 --> 00:09:49,250 請一定要包括正確的庫 使用字符串長度功能。 167 00:09:49,250 --> 00:09:51,790 >> 你有你的密文。 168 00:09:51,790 --> 00:09:53,260 我的名字Zamyla。 169 00:09:53,260 --> 00:09:54,510 [漢化代碼]。 170 00:09:54,510 --> 00:10:02,944