简单的计算器程序在输入(C,MinGW)后意外退出

问题描述 投票:0回答:1

我正在尝试使用 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 的数字输入。

c scanf calculator mingw-w64
1个回答
0
投票

在这些 int 类型的 print 语句中去掉

getchar()
并将
%.2lf
替换为
%d

© www.soinside.com 2019 - 2024. All rights reserved.