使用switch语句在C中创建一个简单的计算器

使用switch语句在C中创建一个简单的计算器,c,scanf,C,Scanf,我是C编程的初学者,我刚刚完成了在代码中使用if-else语句制作计算器的工作。现在我试着用switch语句做同样的事情,但它总是执行默认值。请查看我的代码,并告诉我出了什么问题。 我目前正在用代码块编写代码 如果您有任何帮助,我们将不胜感激。您的问题主要与scanf有关,即先前输入的剩余\n被解释为该输入的输入 此外,操作提示与其相应的输入不匹配 建议解决方案: float num1; printf("Please enter the first number: "); scanf("%f"

我是C编程的初学者,我刚刚完成了在代码中使用if-else语句制作计算器的工作。现在我试着用switch语句做同样的事情,但它总是执行默认值。请查看我的代码,并告诉我出了什么问题。 我目前正在用代码块编写代码


如果您有任何帮助,我们将不胜感激。

您的问题主要与
scanf
有关,即先前输入的剩余
\n
被解释为该输入的输入

此外,操作提示与其相应的输入不匹配

建议解决方案:

float num1;
printf("Please enter the first number: ");
scanf("%f", &num1);

float num2;
printf("Please enter the second number: ");
scanf("%f", &num2);

printf("\nWhat operation do you want to do:\n\tA)Addition\n\tB)Subtraction\n\tC)Multiplication\n\tD)Division\n");
char myChar;
scanf(" %c", &myChar);
您可以添加
printf
作为调试目的-这也会有所帮助。第一次输入的示例:

float num1;
printf("Please enter the first number: ");
scanf(" %f", &num1);
printf("num1 = %f\n", num1 );

charmychar;scanf(“%c”和&myChar)移动到浮点num1之前
当您
scanf(“%c”和&myChar)
读取第二个数字后,您正在读取左边的换行符。您的
switch()
没有相应的案例,因此它运行默认设置。不要使用
scanf
进行用户输入;使用
fgets
。它无法正确执行是一个绝对无用的错误描述,除非您解释什么是无法正确执行。您发布的代码有什么具体问题?可能重复的
%f”
@melpomene my bad“%f”跳过空格之前是多余的。。
float num1;
printf("Please enter the first number: ");
scanf(" %f", &num1);
printf("num1 = %f\n", num1 );