C/C++中的简单计算器程序

1 c

我试图让这个程序给我一个输出,当我做加法,减法,乘法或除法问题时它会给我答案.但是,任何人都无法帮助它.

int main ()
{  
  int choice;  
  float a, b;  
  float sum;  
  float difference;
  float product;
  float quotiont;

  printf("This program adds, subtracts, multiplies, and divides.\n");  
  printf("**************\n");  
  printf("* Calculator *\n");  
  printf("**************\n");  
  printf("Enter an expression: ");  
  scanf("%f %f", &a, &b);  
  scanf("%f %f %f %f", &sum, &difference, &product, &quotiont);  

  sum = a + b;  
  difference = a - b;  
  product = a * b;  
  quotiont = a / b;  

  if(a + b)  
      printf("Answer = %f\n", &sum);  
  else if(a - b)  
      printf("Answer = %f\n", &difference);  
  else if(a * b)  
      printf("Answer = %f\n", &product);  
  else if(a / b)  
      printf("Answer = %f\n", &quotiont);  
  else  
      printf("Error");  
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*ten 13

你想用这条线做什么?

scanf("%f %f %f %f", &sum, &difference, &product, &quotiont);  
Run Code Online (Sandbox Code Playgroud)

这样做需要用户输入四个数字并将它们分别加载到四个变量中.在此行之后,您将为这四个变量分配新值,因此在此行代码中加载值时没有任何意义.

此外,以下if声明的重点是什么?(以及所有else if陈述)

if(a + b)
    printf("Answer = %f\n", &sum);
Run Code Online (Sandbox Code Playgroud)

如果和的ab为非零,则仅打印答案.如果'if'后括号内的表达式求值为零,则它不会执行下面的代码.如果它的计算结果为非零值,它将执行代码.

上述行的另一个问题是您将指向sum变量的指针传递给printf()函数而不是sum变量的实际值.'&sum'返回变量的内存地址,但'sum'返回变量的实际值.所以看起来应该是这样的:

printf("Answer = %f\n", sum);
Run Code Online (Sandbox Code Playgroud)

我注意到你choice在程序的顶部定义了一个变量,但从未使用它.由于这个和你的else if语句链,我假设你想让用户选择是否加,减,乘或除.

为此,我将定义choice为char(字符)而不是int,并让用户键入这四个字符中的一个以分配给choice变量:' +',' -',' *'或' /' .

要定义choice为char,请写下:

char choice;
Run Code Online (Sandbox Code Playgroud)

然后让用户输入如下选项:

scanf("%c", &choice);
Run Code Online (Sandbox Code Playgroud)

这将从用户获取单个字符并将其分配给choice.

最后,将您的if语句更改为以下内容:

if (choice == '+')
    printf("Answer = %f\n", sum);
else if (choice == '-')
    printf("Answer = %f\n", difference);
else
    printf("Error: invalid choice.\n");
Run Code Online (Sandbox Code Playgroud)

您可能还想为此使用switch声明.