C 程序 - 令人困惑的输出

标签 c

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

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

  • 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;
}

当我运行该程序时,它会打印“拼字游戏值:0”。似乎程序完全跳过了 while 循环,也许我没有正确使用 getchar,但我无法找出问题所在。

最佳答案

应该是ch = toupper(ch);

toupper 不修改它的参数。

而且,虽然与该问题没有任何关系,但我建议对这样的代码使用 switch

关于C 程序 - 令人困惑的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368793/

相关文章:

c - 从主程序中分离出多个功能

c - 奇怪的 : printf() affects variable value

c - arm-none-eabi-gcc : Printing float number using printf

c - 为什么 FILE * 不存储打开文件的地址

c - 错误 : request for member 'Name' in something not a structure or union

c - 如何在 nios II cpu 上构建一个简单的锁(互斥锁)

从 C 代码调用 Cython 函数引发段错误

c - 上交所指令

c++ - malloc_info() 是如何工作的?

在 C 中检查 opencl 版本