1 00:00:00,000 --> 00:00:00,720 2 00:00:00,720 --> 00:00:03,190 >> DAVID J. MALAN: Ας υποθέσουμε ότι θα ήθελα να εφαρμόσει ένα πρόγραμμα που ζητά 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 >> Ας επόμενη κηρύξει ως int main κενό και ας προχωρήσουμε τώρα να παρακινήσει 9 00:00:29,860 --> 00:00:31,600 ο χρήστης για ένα string. 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 επαναλάβει από i μέχρι n, η μήκος του s, και για καθένα 19 00:01:03,590 --> 00:01:05,760 επανάληψης αύξηση i. 20 00:01:05,760 --> 00:01:09,970 >> Και στη συνέχεια στο εσωτερικό αυτού του βρόχου, ας πρώτος έλεγχος είναι η σημερινή επιστολή - 21 00:01:09,970 --> 00:01:12,270 το i-στό γράμμα του s, να το πω έτσι - 22 00:01:12,270 --> 00:01:14,170 ένα πεζό γράμμα. 23 00:01:14,170 --> 00:01:23,090 Αν s βραχίονα I είναι μεγαλύτερο ή ίσο σε πεζά ένα, και είναι λιγότερο 24 00:01:23,090 --> 00:01:26,900 ή ίση με πεζά z - 25 00:01:26,900 --> 00:01:30,860 Τώρα, αν θέλετε να μετατρέψετε έναν πεζό γράμμα σε κεφαλαίο, υπενθυμίζουν, πρώτον, ότι 26 00:01:30,860 --> 00:01:35,810 σε ένα πεζό ASCII a είναι 97 και ένα κεφαλαίο Α είναι 65. 27 00:01:35,810 --> 00:01:41,020 Εν τω μεταξύ, ένα πεζό b είναι 98, και ένα κεφαλαίο Β είναι 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 Ή, γενικότερα, απλά αφαιρέστε ότι διαφορά μεταξύ ενός πεζά γράμματα α και α 33 00:02:01,330 --> 00:02:02,310 κεφάλαιο Α. 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 μια και το κεφάλαιο Α είναι. 44 00:02:35,990 --> 00:02:39,610 >> Εν τω μεταξύ, τη στιγμή που ξέρω τη διαφορά, Μπορώ να το αφαιρέσουμε από s 45 00:02:39,610 --> 00:02:43,710 βραχίονα i, η οποία θα πάρει ό, τι είναι προφανώς ένα πεζό γράμμα σε ένα 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 Κάντε κεφαλαιοποιήσει dot κάθετος κεφαλαιοποιούνται. 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, απόσπασμα, unquote backslash n. 56 00:03:18,440 --> 00:03:22,330 Ας αποθηκεύσετε ξανά αυτό το αρχείο, μεταγλωττίσετε και να επαναπροσδιοριστούν. 57 00:03:22,330 --> 00:03:28,090 >> Κάντε κεφαλαιοποιήσει, dot κάθετος επωφεληθούμε. 58 00:03:28,090 --> 00:03:32,540 Και πάλι, για την είσοδο θα παρέχουν "γεια" σε όλα τα πεζά και τώρα να πατήσετε το Enter, 59 00:03:32,540 --> 00:03:34,550 και "γεια", πολύ πιο καθαρά τυπωμένο. 60 00:03:34,550 --> 00:03:36,432