題目來源ios
下面是微博上流傳的一張照片:「各位親愛的同窗們,鑑於你們有時須要使用 wifi,又怕耽誤親們的學習,現將 wifi 密碼設置爲下列數學題答案:A-1;B-2;C-3;D-4;請同窗們本身做答,每兩日一換。謝謝合做!!~」—— 老師們爲了促進學生學習也是拼了…… 本題就要求你寫程序把一系列題目的答案按照卷子上給出的對應關係翻譯成 wifi 的密碼。這裏簡單假設每道選擇題都有 4 個選項,有且只有 1 個正確答案。ide
輸入第一行給出一個正整數 N(≤ 100),隨後 N 行,每行按照 編號-答案
的格式給出一道題的 4 個選項,T
表示正確選項,F
表示錯誤選項。選項間用空格分隔。學習
在一行中輸出 wifi 密碼。spa
8 A-T B-F C-F D-F C-T B-F A-F D-F A-F D-F C-F B-T B-T A-F C-F D-F B-F D-T A-F C-F A-T C-F B-F D-F D-T B-F C-F A-F C-T A-F B-F D-F
13224143
思路1:翻譯
用字符串來讀取每一行的答案,注意有空格,因此用getline(cin, s)來讀取,在接受完N以後,要用getchar()讀取一下換行符才能用getline,否則換行符也會被讀取進字符串。獲取字符串的長度,當s[i] == 'T'的時候,判斷s[i - 2]對應的字符,輸出對應的數字。code
思路2:blog
上面的方法須要用2個循環,能不能減小代碼量呢?ci
若是要輸入的是N行答案,那麼答案的個數就有N * 4個,也就是說,有8行答案的時候,答案的個數就是8 * 4 = 32個,因此只須要循環32次,把一行的每一個答案看成是一次輸入。字符串
輸出的格式形如A-T,定義三個字符a, b, c; a == 'A', b == '-', c == 'T ',若是 c == 'T' ,那麼就輸出 a - 'A' + 1 。get
思路3:
與N沒有關係,輸入字符串只要長度爲3,且 s[2] == 'T' 就輸出是 S[0] - 'A' + 1
思路1
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 string s; 7 int N; 8 cin >> N; 9 getchar(); 10 for (int i = 0; i < N; ++i) 11 { 12 getline(cin, s); 13 for (int j = 0; j < s.size(); ++j) 14 { 15 if (s[j] == 'T') 16 { 17 if (s[j - 2] == 'A') 18 { 19 cout << 1; 20 } 21 else if (s[j - 2] == 'B') 22 { 23 cout << 2; 24 } 25 else if (s[j - 2] == 'C') 26 { 27 cout << 3; 28 } 29 else if (s[j - 2] == 'D') 30 { 31 cout << 4; 32 } 33 } 34 } 35 } 36 return 0; 37 }
思路2
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 char a, b, c; 6 int N; 7 cin >> N; 8 N *= 4; 9 10 for (int i = 0; i < N; ++i) 11 { 12 cin >> a >> b >> c; 13 if (c == 'T') 14 { 15 cout << a - 'A' + 1; 16 } 17 } 18 return 0; 19 }
思路3
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 string s; 7 8 while (cin >> s) 9 { 10 if (s.size() == 3 && s[2] == 'T') 11 { 12 cout << s[0] - 'A' + 1; 13 } 14 } 15 return 0; 16 }