C程序-令人困惑的输出

Sharod Free

我正在尝试创建一个程序,通过求和一个字母的值来计算一个单词的值。

这些是字母及其对应的值:

  • 1点:A,E,I,L,N,O,R,S,T,U
  • 2分:D,G
  • 3分:B,C,M,P
  • 4点:F,H,V,W,Y
  • 5分:K
  • 8点:J,X
  • 10点:Q,Z

这是程序:

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

int main(void)
{
    char ch; int sum=0;

    printf("Enter a word: ");

    while ((ch=getchar())!='\n') {
        toupper(ch);
        if (ch== 'A' || ch== 'E' || ch== 'I' || ch== 'L' || ch== 'N' || ch== 'O' || ch== 'R' || ch== 'S' || ch== 'T' || ch== 'U')
            sum+=1;

        else if (ch== 'D' || ch== 'G')
            sum+=2;

        else if (ch=='B' || ch== 'C' || ch== 'M' || ch== 'P')
            sum+=3;

        else if (ch=='F' || ch== 'H' || ch== 'V' || ch== 'W' || ch== 'Y')
            sum+=4;

        else if (ch=='K')
            sum+=5;

        else if (ch=='J' || ch== 'X')
            sum+=8;

        else if (ch=='Q' || ch== 'Z')
            sum+=10;
    }
    printf("\nScrabble value: %d",sum);

    return 0;
}

当我运行程序时,它会显示“ Scrabble value:0”。似乎该程序完全跳过了while循环,也许我没有正确使用getchar,但是我无法弄清楚出了什么问题。

h

它应该是 ch = toupper(ch);

toupper 不会修改它的参数。

并且,尽管与该问题没有任何关系,但我建议switch对此类代码使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章