C 程序 - 基本计算器

C Program - Basic Calculator

我正在尝试用 C 语言编写一个基本的计算器程序,我快完成了!不过我有一个问题,它与反复询问用户输入有关。

我可以通过一次循环,但即使用户输入了正确的字符,我的程序仍然会跳出循环。

我是 C 的新手,但我已经用 Java 进行了大量编程,所以我了解循环、条件和数据类型的功能。

#include <stdio.h>

int main()
{
    char yes;
    int a, b, c, choice;

    yes = 'y';
    while(yes == 'y' || yes == 'Y')
    {
        printf("Enter first integer: ");
        scanf("%d", &a);

        printf("Enter second integer: ");
        scanf("%d", &b);

        printf("\nAdd(1), Subtract(2), Multiply(3), Divide(4): ");
        scanf("%d", &choice);

        printf("\n");
        switch(choice) 
        {
                case(1):
                    c = a + b;
                    printf("%d + %d = %d\n", a, b, c);
                    break;
                case(2):
                    c = a - b;
                    printf("%d - %d = %d\n", a, b, c);
                    break;
                case(3):
                    c = a * b;
                    printf("%d * %d = %d\n", a, b, c);
                    break;
                case(4):
                    c = a / (float)b;
                    printf("%d / %d = %d\n", a, b, c);
                    break;
                default:
                    printf("Incorrect choice. Try again.\n");
        }

        printf("\nAgain (Y/N): ");
        scanf("%c", &yes);
    }

    return 0;
}

您需要使用尾随的换行符,输入保留在 stdin 缓冲区中以供下一个 scanf 读取。

改变

scanf("%c", &yes);

scanf(" %c", &yes);

问题是输入数字选择要做什么操作后,换行符留在输入框上。因此,当询问用户是否要再次执行此操作时,将换行而不是 y 或 n。我可能是错的,自从我完成一些编程以来已经有一段时间了。 对我来说修复它的方法是在行

之后放一些代码
printf("\nAgain (Y/N): ");

在 printf 语句之后立即添加此位将从输入中删除换行符,应该可以解决问题。

while(getchar() != '\n')
   getchar();

也许其他人可以准确解释为什么会这样,我不记得具体细节了。这是一件我觉得有用的小事,时不时会出现。