1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> DAVID J.马兰:假设我想 实现一个提示程序 3 00:00:03,190 --> 00:00:06,650 为一个字符串的用户,然后前进 充分利用自己的输入, 4 00:00:06,650 --> 00:00:09,790 将任何小写字母 他们键入大写字母。 5 00:00:09,790 --> 00:00:11,770 好吧,让我们继续前进, 实施该计划。 6 00:00:11,770 --> 00:00:18,760 >> 让我们首先包括cs50.h其次 通过包含stdio.h中。 7 00:00:18,760 --> 00:00:23,990 所以,我们可以使用strlen的, 让我们包括string.h中。 8 00:00:23,990 --> 00:00:29,860 >> 让我们接下来的声明主要为整型主空 而现在让我们继续提示 9 00:00:29,860 --> 00:00:31,600 用户输入的字符串。 10 00:00:31,600 --> 00:00:34,840 printf的,让我们来促使他们 对于某些输入。 11 00:00:34,840 --> 00:00:36,460 现在让我们来声明一个字符串 - 12 00:00:36,460 --> 00:00:37,630 我们会打电话给它s - 13 00:00:37,630 --> 00:00:44,010 并存储在它调用的结果 在CS50库函数GetString的。 14 00:00:44,010 --> 00:00:48,850 >> 让我们现在开始遍历每个 s中,资本的字符 15 00:00:48,850 --> 00:00:50,650 我们所看到的任何小写字母。 16 00:00:50,650 --> 00:00:53,630 对于int,我得到0。 17 00:00:53,630 --> 00:00:58,780 让我们也宣告n作为等于 s的字符串的长度,这样我们就可以 18 00:00:58,780 --> 00:01:03,590 从我重复,直到n,则 第长度,并在每个 19 00:01:03,590 --> 00:01:05,760 迭代增量的我。 20 00:01:05,760 --> 00:01:09,970 >> 然后在这个循环中,让我们 首先检查当前字母 - 21 00:01:09,970 --> 00:01:12,270 s的第i个字母,可以这么说 - 22 00:01:12,270 --> 00:01:14,170 一个小写字母。 23 00:01:14,170 --> 00:01:23,090 如果s托架i是大于或等于 以小写a,它的少 24 00:01:23,090 --> 00:01:26,900 大于或等于小写Ž - 25 00:01:26,900 --> 00:01:30,860 现在,如果我们要转换为小写 字母为大写,先记得, 26 00:01:30,860 --> 00:01:35,810 ASCII中的小写字母a为97 和一个大写字母A是65。 27 00:01:35,810 --> 00:01:41,020 与此同时,一个小写b为98, 和一个大写的B是66。 28 00:01:41,020 --> 00:01:44,180 >> 如果我们继续来看看这个模式, 我们将看到,小写 29 00:01:44,180 --> 00:01:49,240 字母总是32值高 比大写字母。 30 00:01:49,240 --> 00:01:53,490 因此,如果我们想从小写转换 为大写,它应该 31 00:01:53,490 --> 00:01:57,210 足够了,真的,减去 32来自用户的输入。 32 00:01:57,210 --> 00:02:01,330 或者更一般地,只是减去该 一个小写的a和a之间的区别 33 00:02:01,330 --> 00:02:02,310 A.资本 34 00:02:02,310 --> 00:02:03,410 >> 如何表达呢? 35 00:02:03,410 --> 00:02:04,640 好吧,让我们做它的代码。 36 00:02:04,640 --> 00:02:09,960 printf的,报价,引文结束“%c”按钮打印 当前字符,然后是 37 00:02:09,960 --> 00:02:18,500 印刷无论是在S支架I减 做一个小写的结果 38 00:02:18,500 --> 00:02:22,660 减去大写分号。 39 00:02:22,660 --> 00:02:27,010 换句话说,此括号内的 表情,小负大A,是 40 00:02:27,010 --> 00:02:29,360 要返回我们 当天32的端部。 41 00:02:29,360 --> 00:02:31,230 但我没有记 它的32。 42 00:02:31,230 --> 00:02:34,150 我可以让电脑搞清楚 什么小写之间的差 43 00:02:34,150 --> 00:02:35,990 一,资本A是。 44 00:02:35,990 --> 00:02:39,610 >> 同时,一旦我知道的区别, 我可以从s中减去 45 00:02:39,610 --> 00:02:43,710 支架我,这将采取什么样的 大概是小写字母的 46 00:02:43,710 --> 00:02:48,100 较低的值,即对应的值 到大写等价的。 47 00:02:48,100 --> 00:02:51,240 现在,让我们保存,编译, 并运行此程序。 48 00:02:51,240 --> 00:02:57,760 使利用点斜线资本化。 49 00:02:57,760 --> 00:03:01,290 和我的投入将是打招呼。 50 00:03:01,290 --> 00:03:02,920 我们在那里有,你好。 51 00:03:02,920 --> 00:03:05,570 >> 现在我的提示下,无可否认,是 有点难看,因为我们已经 52 00:03:05,570 --> 00:03:07,810 省略了印刷的一个位。 53 00:03:07,810 --> 00:03:09,370 并让我们回去,并添加。 54 00:03:09,370 --> 00:03:12,890 这个程序的最底部, 我很干脆,而且大多为 55 00:03:12,890 --> 00:03:18,440 美观的目的,将要添加的printf, 报价,引文结束反斜杠Ñ。 56 00:03:18,440 --> 00:03:22,330 让我们重新保存这个文件, 重新编译,重新运行。 57 00:03:22,330 --> 00:03:28,090 >> 使资本,点斜线把握。 58 00:03:28,090 --> 00:03:32,540 再次,输入我将提供“你好” 在所有的小写,现在敲回车, 59 00:03:32,540 --> 00:03:34,550 和“你好”,更干净地印刷。 60 00:03:34,550 --> 00:03:36,432