使用数组在C中创建switch语句?

Eri*_*ric 2 c arrays switch-statement

我正在尝试创建一个switch语句,它将一个单词输入一个数组,然后通过switch语句抛出每个字母,并为每个字母分配一个点,具体取决于它是什么字母,并给出该单词的最终点值,我似乎无法使阵列部分正确.任何帮助,将不胜感激!

int main(){
int letter_points = 0;
char word[7];
int word_length = 7;
int i;
printf("Enter a Word\n");
scanf("%s", word);
for(i = 0; i < word_length; i++){

switch(word){
    //1 point
    case 'A':
    case 'E':
    case 'I':
    case 'L':
    case 'N':
    case 'O':
    case 'R':
    case 'S':
    case 'T':
    case 'U':
        letter_points++;
        break;
    //2 points
    case 'D':
    case 'G':
        letter_points += 2;
        break;
    //3 points
    case 'B':
    case 'C':
    case 'M':
    case 'P':
        letter_points += 3;
        break;
    //4 points
    case 'F':
    case 'H':
    case 'V':
    case 'W':
    case 'Y':
        letter_points += 4;
        break;
    //5 points
    case 'K':
        letter_points += 5;
        break;
    //8 points
    case 'J':
    case 'X':
        letter_points += 8;
        break;
    //10 points
    case 'Q':
    case 'Z':
        letter_points += 10;
        break;
}
}
printf("%d\n", letter_points);
return;
}
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 7

拥有查找数组可能会更快:

int const letter_score[26] = { 1, 2, 1, 3, ..., 10 };
/*                      key:   A  B  C  D        Z    */

score += letter_score[c - 'A'];   // or "toupper(word[i]) - 'A'"
Run Code Online (Sandbox Code Playgroud)

警告:这需要一种编码,其中大写字母是连续排列的,例如Unicode或ASCII.