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。 [汉化代码]。