DAVID J.马兰:假设我想 实现一个提示程序 为一个字符串的用户,然后前进 充分利用自己的输入, 将任何小写字母 他们键入大写字母。 好吧,让我们继续前进, 实施该计划。 让我们首先包括cs50.h其次 通过包含stdio.h中。 所以,我们可以使用strlen的, 让我们包括string.h中。 让我们接下来的声明主要为整型主空 而现在让我们继续提示 用户输入的字符串。 printf的,让我们来促使他们 对于某些输入。 现在让我们来声明一个字符串 - 我们会打电话给它s - 并存储在它调用的结果 在CS50库函数GetString的。 让我们现在开始遍历每个 s中,资本的字符 我们所看到的任何小写字母。 对于int,我得到0。 让我们也宣告n作为等于 s的字符串的长度,这样我们就可以 从我重复,直到n,则 第长度,并在每个 迭代增量的我。 然后在这个循环中,让我们 首先检查当前字母 - s的第i个字母,可以这么说 - 一个小写字母。 如果s托架i是大于或等于 以小写a,它的少 大于或等于小写Ž - 现在,如果我们要转换为小写 字母为大写,先记得, ASCII中的小写字母a为97 和一个大写字母A是65。 与此同时,一个小写b为98, 和一个大写的B是66。 如果我们继续来看看这个模式, 我们将看到,小写 字母总是32值高 比大写字母。 因此,如果我们想从小写转换 为大写,它应该 足够了,真的,减去 32来自用户的输入。 或者更一般地,只是减去该 一个小写的a和a之间的区别 A.资本 如何表达呢? 好吧,让我们做它的代码。 printf的,报价,引文结束“%c”按钮打印 当前字符,然后是 印刷无论是在S支架I减 做一个小写的结果 减去大写分号。 换句话说,此括号内的 表情,小负大A,是 要返回我们 当天32的端部。 但我没有记 它的32。 我可以让电脑搞清楚 什么小写之间的差 一,资本A是。 同时,一旦我知道的区别, 我可以从s中减去 支架我,这将采取什么样的 大概是小写字母的 较低的值,即对应的值 到大写等价的。 现在,让我们保存,编译, 并运行此程序。 使利用点斜线资本化。 和我的投入将是打招呼。 我们在那里有,你好。 现在我的提示下,无可否认,是 有点难看,因为我们已经 省略了印刷的一个位。 并让我们回去,并添加。 这个程序的最底部, 我很干脆,而且大多为 美观的目的,将要添加的printf, 报价,引文结束反斜杠Ñ。 让我们重新保存这个文件, 重新编译,重新运行。 使资本,点斜线把握。 再次,输入我将提供“你好” 在所有的小写,现在敲回车, 和“你好”,更干净地印刷。