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();
也许其他人可以准确解释为什么会这样,我不记得具体细节了。这是一件我觉得有用的小事,时不时会出现。
我正在尝试用 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();
也许其他人可以准确解释为什么会这样,我不记得具体细节了。这是一件我觉得有用的小事,时不时会出现。