罗伯:嗨,我是罗布,让我们破译 在的V @ genere程序。 我们必须这样做的第一件事就是让 确保用户输入的内容,我们预计 他们在命令行。 因此,如果的argc不为2,这意味着要么 用户没有输入字符串我们 要使用作为我们的加密 串,或者它们 输入了太多的东西。 我们不知道该怎么办 与其他的东西。 因此,我们告诉他们什么,他们 应该已经进入。 我们回来。 现在,假设的argc是2,我们可以 继续与程序的其余部分。 我们别名的argv的名称[1] 入变量的关键字。 这样我们就不必 使用名称的argv [1] 整个程序的其余部分。 也许大家会忘记什么 这意味着等。 关键字是一个好得多的名字。 我们会立即抓住长度 在这里我们的关键字。 好了,现在我们要检查 我们的关键字实际上是有效的。 我们使用加密字符串的关键字 应该仅仅是按字母顺序排列 字符。 如果用户输入的非字母 字符,应该说,关键字 必须只包含A到 Z和然后返回。 所以这个for循环遍历所有 我们的关键字的字符,检查 如果一个人是不是按字母顺序排列,然后 我们需要打印的警告。 现在,一旦我们到了这一点,我们知道 该字符串必须是正确的。 关键字必须是正确的。 现在我们需要从得到的消息 他们希望我们的用户 加密与关键短语。 因此,为了得到这一点,我们有一个 做while循环,那将 不断地得到一个字符串从用户 直到他们进入一个有效的字符串。 继续,我们在这里看到这个变量, 整型nun_letters_seen。 我们就会明白为什么我们需要 即在一秒钟。 但这种循环会遍历 从i等于0一路攀升到我 等于n,它意味着我们遍历 在所有可能的 人物在我们的信息。 因为我们要加密所有的 在我们的信息的字符。 所以请注意我们做,如果(isalphamessage [I], 因为我们不希望加密 字符不是按字母顺序排列。 如果有符号,空格 或数字,我们不 要加密的。 现在,假设它是按字母顺序排列, 我们首先要弄清楚我们 其实要加密 使用消息。 那么我的意思了吗? 让我们假设的关键短语 输入的用户是ABC。 我们使用什么加密的。 现在,天真,我们认为这意味着 我们要的第一个字符进行加密 我们的信息由0,因为手段 由0旋转的字符。 我们希望第二个字符进行加密 1,由2第三个字符, 第四个字符由0,第五 通过如图1所示,第六2,依此类推。 但请记住,我们要跳过 空格和符号和数字。 这意味着,如果用户已经输入的 你好世界消息 他们要加密,然后 我们希望通过0到加密的H 对应于一个时,E 1,则 升2,升数:0,邻1。 我们要跳过空格,加密 在W 2,邻由0,1,2,0。 所以请注意,如果我们没有跳过了 空间,那么我们就会加密 在W由0和结束时 不正确的字符串。 OK,这就是我们所需要的变量 num_letters_seen的。 如果我们只是要使用加密 这种方法,它不会跳过 符号,空格和数字,那么我们 可以只使用变量i是什么 索引到我们的关键短语。 我们需要使用num_letters_seen保持 轨道在实际到位的 我们要索引关键短语。 因此,这里,如果关键字我们有,如果 num_letter_seen MOD keyword_length,所以 为什么我们需要国防部 关键字长度是多少? 尊敬的顾客您好世界是一个很好的例子。 如果关键字是ABC,那么我们就需要 不断由当时的加密b 则c,然后翻转左右, A,B,C,A,B,C。 因此,我们需要通过关键字长度国防部 以转回到身边。 因此,如果这是一个大写字母, 那么我们想通过加密 在字母表中该字母的位置, 我们得到了公正 减去了资本A.和 同样,对于小写字母,我们 可以得到我们想要的键 减去了小写。 所以,不管是否信 在关键短语是一个资本或 小写字母,我们要 以相同的量进行加密。 现在,我们有我们的重点,我们在这里看到, 如果消息我是一个大写 字符,然后我们要计算的 在那个字母位置 字符,添加我们的关键是,换回来 围绕这样,如果我们去过去 Ž我们回到A,B,C,依此类推。 然后,终于,加回资本A.所以 我们移回[?访问?] 而不是范围这些字符的 在字母数字位置 这些字符。 和我们做同样的事情 小写字符。 除非我们想减去了小写 一个和在背面上添加它 最后,小写a。 请注意,num_letter_seen只 如果增加的消息,我是 按字母顺序排列。 这就是我们如何跳过空格,符号和 在我们的关键短语,因为数字 num_letter_seen是我们正在使用的是什么 索引到我们的关键字。 最后,在结束时,现在该消息 我已被加密,我们 打印出来的消息我。 就是这样。 我的名字是罗布。 这是的V @ genere。 [音乐播放]