#49187: 測資二過不了


happydavid2006214@gmail.com (567ouo)

學校 : 國立臺灣大學
編號 : 311504
來源 : [140.112.16.175]
最後登入時間 :
2025-07-31 13:27:30

救命! 測資二每次都 WA,真的不知道該怎麼辦,請好心人幫幫我

程式碼如下,我也不確定哪裏不正確了

======================================================================================================

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
    int n;
    scanf("%d", &n);

    char num_to_alpha[26] = {'m', 'j', 'q', 'h', 'o', 'f', 'a', 'w', 'c', 'p', 'n', 's', 'e', 'x', 'd', 'k', 'v', 'g', 't', 'z', 'b', 'l', 'r', 'y', 'u', 'i'};
    char alpha_to_num[26] = {'u', 'z', 'r', 'm', 'a', 't', 'i', 'f', 'x', 'o', 'p', 'n', 'h', 'w', 'v', 'b', 's', 'l', 'e', 'k', 'y', 'c', 'q', 'j', 'g', 'd'};
    for (int i = 0; i < n; i++){
        int m;
        scanf("%d", &m);

        int sum = 0;
        char answer[m + 1];
        for (int j = 0; j < m; j++){
            char input[3];
            scanf("%s", input);

            if (isalpha(input[0])){
                int find = 0;
                while (input[0] != alpha_to_num[find]){
                    find++;
                }
                sum += find + 1;
            }else{
                int index;
                if (input[1] != '\0'){
                    index = (input[0] - '0') * 10 + (input[1] - '0');
                }else{
                    index = (input[0] - '0');
                }
                answer[j] = num_to_alpha[index - 1];
            }
        }

        if (sum != 0){
            printf("%d\n", sum);
        }else{
            printf("%s\n", answer);
        }
    }

    return 0;
}