1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> DAVID J. MALAN: Anta at jeg ønsker å gjennomføre et program som ber 3 00:00:03,190 --> 00:00:06,650 brukeren for en streng og deretter fortsetter å utnytte deres innspill, 4 00:00:06,650 --> 00:00:09,790 konvertere eventuelle små bokstaver at de skriver til store bokstaver. 5 00:00:09,790 --> 00:00:11,770 Vel, la oss gå videre og gjennomføre det programmet. 6 00:00:11,770 --> 00:00:18,760 >> La oss først inkludere cs50.h fulgt ved inkluderer stdio.h. 7 00:00:18,760 --> 00:00:23,990 Og slik at vi kan bruke strlen, la oss inkludere string.h. 8 00:00:23,990 --> 00:00:29,860 >> La oss neste erklære hoved som int main tomrom og la oss nå gå videre til å spørre 9 00:00:29,860 --> 00:00:31,600 brukeren for en streng. 10 00:00:31,600 --> 00:00:34,840 Printf, la oss be dem for noen innspill. 11 00:00:34,840 --> 00:00:36,460 Nå la oss erklære en streng - 12 00:00:36,460 --> 00:00:37,630 vi kaller det er - 13 00:00:37,630 --> 00:00:44,010 og lagre i det resultatet av å ringe Det CS50 bibliotek funksjon GetString. 14 00:00:44,010 --> 00:00:48,850 >> La oss nå gå videre til å iterere over hver av karakterene i s, utnytte 15 00:00:48,850 --> 00:00:50,650 noen små bokstaver som vi ser. 16 00:00:50,650 --> 00:00:53,630 For int, jeg får 0. 17 00:00:53,630 --> 00:00:58,780 La oss også erklære n som er lik strengen lengden på s, slik at vi kan 18 00:00:58,780 --> 00:01:03,590 iterere fra jeg opp til n, den lengde s, og i hver 19 00:01:03,590 --> 00:01:05,760 iterasjon økning i. 20 00:01:05,760 --> 00:01:09,970 >> Og så innsiden av denne sløyfen, la oss første sjekk er gjeldende bokstav - 21 00:01:09,970 --> 00:01:12,270 i-te brev s, så å si - 22 00:01:12,270 --> 00:01:14,170 en liten bokstav. 23 00:01:14,170 --> 00:01:23,090 Hvis s braketten i er større enn eller lik til små bokstaver a, og det er mindre 24 00:01:23,090 --> 00:01:26,900 enn eller lik små bokstaver z - 25 00:01:26,900 --> 00:01:30,860 Nå hvis vi ønsker å konvertere en små bokstaver brev til store bokstaver, husker første at 26 00:01:30,860 --> 00:01:35,810 i ASCII inn en liten en er 97 og en stor bokstav A er 65 år. 27 00:01:35,810 --> 00:01:41,020 I mellomtiden, er en små bokstaver b 98, og en stor bokstav B er 66. 28 00:01:41,020 --> 00:01:44,180 >> Hvis vi fortsetter å se på dette mønsteret, vi får se at små bokstaver 29 00:01:44,180 --> 00:01:49,240 bokstavene er alltid 32 verdier høyere enn de store bokstaver. 30 00:01:49,240 --> 00:01:53,490 Så hvis vi ønsker å konvertere fra små bokstaver til store bokstaver, bør det 31 00:01:53,490 --> 00:01:57,210 nok, egentlig, å trekke 32 fra brukerens input. 32 00:01:57,210 --> 00:02:01,330 Eller mer generelt, bare trekke fra at Forskjellen mellom en små en og en 33 00:02:01,330 --> 00:02:02,310 kapital A. 34 00:02:02,310 --> 00:02:03,410 >> Hvordan å uttrykke det? 35 00:02:03,410 --> 00:02:04,640 Vel, la oss gjøre det i kode. 36 00:02:04,640 --> 00:02:09,960 Printf, sitat, unquote "% c" for å skrive ut i tegnene, etterfulgt av 37 00:02:09,960 --> 00:02:18,500 utskrift alt som er i s brakett i minus resultatet av å gjøre små bokstaver et 38 00:02:18,500 --> 00:02:22,660 minus store bokstaver Semikolon. 39 00:02:22,660 --> 00:02:27,010 Med andre ord, dette parentes uttrykk, lite minus stor A, er 40 00:02:27,010 --> 00:02:29,360 kommer til å returnere til oss på slutten av dag 32.. 41 00:02:29,360 --> 00:02:31,230 Men jeg trenger ikke å huske at det er 32. 42 00:02:31,230 --> 00:02:34,150 Jeg kan la datamaskinen til å finne ut hva forskjellen mellom små 43 00:02:34,150 --> 00:02:35,990 en og kapital A er. 44 00:02:35,990 --> 00:02:39,610 >> I mellomtiden, når jeg vet at forskjellen, Jeg kan trekke det fra s 45 00:02:39,610 --> 00:02:43,710 brakett i, noe som vil ta det som er antagelig en liten bokstav til en 46 00:02:43,710 --> 00:02:48,100 lavere verdi, nemlig en verdi som kart på en stor bokstav tilsvarende. 47 00:02:48,100 --> 00:02:51,240 La oss nå lagre, sammenstille, og kjøre dette programmet. 48 00:02:51,240 --> 00:02:57,760 Gjør kapital dot slash kapitalisert. 49 00:02:57,760 --> 00:03:01,290 Og mitt innspill vil være hallo. 50 00:03:01,290 --> 00:03:02,920 Og det har vi, hallo. 51 00:03:02,920 --> 00:03:05,570 >> Nå er min ledeteksten, riktignok er litt stygg, fordi vi har 52 00:03:05,570 --> 00:03:07,810 utelatt en bit av utskrift. 53 00:03:07,810 --> 00:03:09,370 Og la oss gå tilbake og legge det. 54 00:03:09,370 --> 00:03:12,890 Helt på bunnen av dette programmet, Jeg er veldig enkelt, og i stor grad for 55 00:03:12,890 --> 00:03:18,440 estetisk formål, kommer til å legge printf, sitat, unquote backslash n. 56 00:03:18,440 --> 00:03:22,330 La oss resave denne filen, rekompilere, reprise. 57 00:03:22,330 --> 00:03:28,090 >> Gjør kapitalisere, dot slash kapitalisere. 58 00:03:28,090 --> 00:03:32,540 Igjen, for innspill vil jeg gi "hallo" i alle små bokstaver og nå trykker Enter, 59 00:03:32,540 --> 00:03:34,550 og "hallo", mye mer renslig ut. 60 00:03:34,550 --> 00:03:36,432