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