代码的运算到底哪错了

问题遇到的现象和发生背景

可以运行出来但是输入数字后计算错误是怎么回事

问题相关代码,请勿粘贴截图

#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
double number1 = 0.0;
double number2 = 0.0;
char operation = 0;
printf("\nEnter the calculation\n");
scanf("%f %c %lf", &number1, &operation, &number2);
switch (operation)
{
case '+':
printf("= %lf\n", number1 + number2);
break;
case '-':
printf("=%lf\n", number1 - number2);
break;
case'*':
printf("=%lf\n,number1 * number2");
break;
case '/':
if (number2 == 0)
printf("\n\n\a Division by zero error!\n");
else
printf("=%lf\n", number1 / number2);
break;
case '%':
if ((long)number2 == 0)
printf("\n\n\a Division by zero error!\n");
else
printf(" = % ld\n", (long)number1 % (long)number2);
break;
default:
printf("\n\n\aIllegal operation!\n");
break;
}
return 0;
}

scanf 的 double 类型要 %lf ,还有乘法的双引号标错位置了


  scanf("%lf %c %lf", &number1, &operation, &number2);
  。。。
  printf("=%lf\n",number1 * number2);

因为你第9行double用成了float。
scanf("%f %c %lf",......);要改成scanf("%lf %c %lf", &number1, &operation, &number2);

供参考:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    double number1 = 0.0;
    double number2 = 0.0;
    char   operation = 0;
    printf("\nEnter the calculation\n");
    scanf("%lf %c %lf", &number1, &operation, &number2);
    //scanf("%f %c %lf", &number1, &operation, &number2);
    switch (operation)
    {
       case '+':
                printf("= %lf\n", number1 + number2);
                break;
       case '-':
                printf("= %lf\n", number1 - number2);
                break;
       case'*':
                printf("= %lf\n", number1 * number2);
                //printf("=%lf\n,number1 * number2");
                break;
       case '/':
                if (number2 == 0)
                    printf("\n\n\a Division by zero error!\n");
                else
                    printf("= %lf\n", number1 / number2);
                break;
       case '%':
                if ((long)number2 == 0)
                    printf("\n\n\a Division by zero error!\n");
                else
                    printf(" = %ld\n", (long)number1 % (long)number2);
                break;
       default:
                printf("\n\n\aIllegal operation!\n");
                break;
    }
    return 0;
}