首页 > 解决方案 > 切换大小写以计算单词和字符的数量

问题描述

输出窗口命令我试图在 C 中使用 switch case 来计算用户输入中的字符、单词、换行符的数量。该代码似乎合法,没有引发错误,但是,输出无法按预期工作。请看看并告诉我我做错了什么。提前致谢!这是代码:

#include <stdio.h>
int main()
{
    char a, words = 1, characters = 0, newlines = 0;
    printf("What do you have in mind? ");
    a = getchar();

    while ((a=getchar()) && a != EOF)
    {
        switch (a)
        {
        case '1':
            if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
                characters++;
            printf("The amount of character is %c ", characters); 
        
        case '2':
            if (a == ' ' || a == '\t')
                words++;
            printf("The amount of word is %c ", words); 

        case '3':
            if (a == '\t')
                newlines++;
            printf("The amount of newlines is %c ", newlines); 
        default:
            if (a == EOF)
                break;
            
        }
    }
    
    return 0;
}

标签: cswitch-statement

解决方案


您误解了 switch /case 的含义。这并不意味着'第一种情况','第二种情况'..在某些情况下,它意味着(在您的特定情况下),如果用户只是输入'1'然后执行此操作,用户只需输入'2'然后执行这个,...嗯,你没有输入 1 或 2 或 3。

只需这样做

while ((a=getchar()) && a != EOF)
{

        if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
            characters++;
        printf("The amount of character is %c ", characters); 
    
        if (a == ' ' || a == '\t')
            words++;
        printf("The amount of word is %c ", words); 

        if (a == '\t')
            newlines++;
        printf("The amount of newlines is %c ", newlines); 
}

此外,您必须将 a 更改为 int


推荐阅读