我正在尝试使用 MinGW 用 C 语言编写一个基本的计算器程序。但是,在我输入运算符(+、-、* 或 /)后,程序意外退出。我检查了常见错误,例如缺少 return 0;和除以零,但我似乎找不到罪魁祸首。不知道编译器是否有问题
这是我的代码
#include <stdio.h>
int main() {
int number1, number2;
double result;
char op;
printf("Enter the 1st number: v2 ");
scanf("%d", &number1);
getchar(); // Consume the newline
printf("Enter the 2nd number: ");
scanf("%d", &number2);
getchar(); // Consume the newline
printf("Enter an operator (+, -, *, or /) ");
scanf(" %c", &op);
switch (op) {
case '+':
result = number1 + number2;
printf("%.2lf + %.2lf = %.2lf\n", number1, number2, result);
break;
case '-':
result = number1 - number2;
printf("%.2lf - %.2lf = %.2lf\n", number1, number2, result);
break;
case '/':
result = (double)number1 / number2; // Handle division by zero
printf("%.2lf / %.2lf = %.2lf\n", number1, number2, result);
break;
case '*':
result = number1 * number2;
printf("%.2lf * %.2lf = %.2lf\n", number1, number2, result);
break;
default:
printf("Invalid operator\n");
break;
}
return 0;
}
我确保有返回0;主函数末尾的语句表示程序成功终止
我回顾了如何使用 scanf 读取数字输入和运算符。我重点关注剩余换行符的潜在问题( )来自影响运算符 scanf 的数字输入。
在这些 int 类型的 print 语句中去掉
getchar()
并将 %.2lf
替换为 %d
。