天天看點

PAT B1076 Wifi密碼

題目描述:

下面是微網誌上流傳的一張照片:“各位親愛的同學們,鑒于大家有時需要使用 wifi,又怕耽誤親們的學習,現将 wifi 密碼設定為下列數學題答案:A-1;B-2;C-3;D-4;請同學們自己作答,每兩日一換。謝謝合作!!~”—— 老師們為了促進學生學習也是拼了…… 本題就要求你寫程式把一系列題目的答案按照卷子上給出的對應關系翻譯成 wifi 的密碼。這裡簡單假設每道選擇題都有 4 個選項,有且隻有 1 個正确答案。

PAT B1076 Wifi密碼

輸入格式:

輸入第一行給出一個正整數 N(≤ 100),随後 N 行,每行按照 ​

​編号-答案​

​​ 的格式給出一道題的 4 個選項,​

​T​

​​ 表示正确選項,​

​F​

​ 表示錯誤選項。選項間用空格分隔。

輸出格式:

在一行中輸出 wifi 密碼。

輸入樣例:

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、輸入一道題的答案用字元串數組存儲,然後判斷哪一個字元串中含有‘T’即為正确答案

  2、将答案和對應的數字用map存儲,找到含有T的字元串時,對應選項的數字輸出

#include<iostream>
#include<string>
#include<map>

using namespace std;

map<char, int> key = { 
    {'A',1},{'B',2},{'C',3},{'D',4} 
};   //便于有更多選項的擴充

const int PASS_NUM = 4; //題目選項的個數

int main () {
    int N;   //WIFI密碼共幾位數(幾道題)
    cin >> N;
    for ( int i = 0; i < N; i++ ) {
        string str [PASS_NUM] = {};  //每道題答案由4個字元串組成  A-T B-F C-F D-F

        //先輸入答案對應字元串
        for ( int j = 0; j < PASS_NUM; j++ ) {
            cin >> str [j];
        }

        //找出正确答案并輸出
        for ( int j = 0; j < PASS_NUM; j++ ) {

            if ( str [j].find('T') != -1) {  //也可以直接判斷str[j][2]=='T',但是可複用性低
                //如果目前答案是正确答案
                printf ( "%d", key [str [j] [0]] );
                break;
            }
        }
    }
    system ("pause");
    return 0;
}