程序中的if 和else 同时执行了

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char data = 'v';
    int i = 0;
    while (1)
    {
        data = getchar();
        if (data >= 'A' && data <= 'Z')
        {
            data = data + 32;
            printf("%c\n", data);
        }
        else if (data >= 97 && data <= 122)
        {
            data = data - 32;
            printf("%c\n",data);
        }
        else if (data >= 48 && data <= 57)
        {
            printf("%c\n", data);
        }
        else if (data == 32)
        {
            printf("space\n");
        }
        else 
        {
            i++;
            printf("error, 这是第 %d 次错误\n", i);
        }
    }
    return 0;
}

/就是想把网课上提到的事情执行一遍,结果
运行结果及报错内容
输入 A
输出 a
error,这是第1次错误
继续输入 *
输出 error,这是第2次错误
error,这是第3次错误
/


#include<stdio.h>
#include<stdlib.h>
int main()
{
    char data = 'v';
    int i = 0;
    while (1)
    {
        data = getchar();
        getchar();
        if (data >= 'A' && data <= 'Z')
        {
            data = data + 32;
            printf("%c\n", data);
        }
        else if (data >= 97 && data <= 122)
        {
            data = data - 32;
            printf("%c\n", data);
        }
        else if (data >= 48 && data <= 57)
        {
            printf("%c\n", data);
        }
        else if (data == 32)
        {
            printf("space\n");
        }
        else
        {
            i++;
            printf("error, 这是第 %d 次错误\n", i);
        }
    }
    return 0;
}

加一个getchar()消除缓存

img

#include<stdio.h>
#include<stdlib.h>
int main()
{
    char data = 'v';
    int i = 0;
    while (1)
    {
    
        data = getchar();
        getchar();
        if (data >= 'A' && data <= 'Z')
        {
            data = data + 32;
            printf("%c\n", data);
        }
        else if (data >= 97 && data <= 122)
        {
            data = data - 32;
            printf("%c\n",data);
        }
        else if (data >= 48 && data <= 57)
        {
            printf("%c\n", data);
        }
        else if (data == 32)
        {
            printf("space\n");
        }
        else
        {
            i++;
            printf("error, 这是第 %d 次错误\n", i);
        }
    }
    return 0;
}


回车键的影响,这样就行了

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char data = 'v';
    int i = 0;
    while (1)
    {
        data = getchar();
        if (data >= 'A' && data <= 'Z')
        {
            data = data + 32;
            printf("%c\n", data);
            getchar();
        }
        else if (data >= 97 && data <= 122)
        {
            data = data - 32;
            printf("%c\n", data);
            getchar();
        }
        else if (data >= 48 && data <= 57)
        {
            printf("%c\n", data);
            getchar();
        }
        else if (data == 32)
        {
            printf("space\n");
            getchar();
        }
        else
        {
            i++;
            printf("error, 这是第 %d 次错误\n", i);
            getchar();
        }
    }
    return 0;
}