【问题标题】:Calculator with Functions带函数的计算器
【发布时间】:2014-04-30 12:54:18
【问题描述】:

我想编写一个简单的计算器。计算在函数中。 我的问题是,结果总是 0。:( 怎么了? 请看我的代码:

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>

double addition(double a,double c);
double subtraktion(double a, double c);
double multiplikation(double a, double c);
double division(double a, double c);



int main()
{
  double z=0, a, c;
  char b;
  printf("Insert your Numbers to calculate!");
  scanf_s("%lf", &a);
  scanf_s("%c", &b);
  scanf_s("%lf", &c);
  if (b == '+')
  {
    addition(a, c);
  }
  if (b == '-')
  {
    subtraktion(a, c);
  }
  if (b == '*')
  {
    multiplikation(a, c);
  }
  if (b == '/')
  {
    division(a, c);
  }
  printf("Result:  %lf", z);
  system("pause");
}

double addition(double a, double c)
{
  double z;
  z = a + c;
  return(z);
}

double subtraktion(double a, double c)
{
  double z;
  z = a - c;
  return(z);
}

double multiplikation(double a, double c)
{
  double z;
  z = a*c;
  return(z);
}

double division(double a, double c)
{
  double z;
  z = a / c;
  return(z);
}

我使用 Visual Studio 2013 进行编程。我尝试调试该程序,但这不起作用。请原谅我英语不好。

【问题讨论】:

    标签: c function calculator


    【解决方案1】:

    您没有将操作结果分配给z。而不是:

    if (b == '+')
    {
        addition(a, c);
    
     }
    

    你应该这样做

    if (b == '+')
    {
        z = addition(a, c);
    
     }
    

    对于所有其他情况也是如此

    【讨论】:

    • 即使有变化?虽然这可能不是唯一的问题,但绝对是一件事会导致结果仍然为 0
    • 是的,我在所有 if 案例中添加了 z=。我可以用 %c 或 %s 扫描运算符吗?
    • 我的 c 有点生锈了,我只是注意到缺少分配。我会尝试缩小问题发生的范围,(例如,在ifs 中打印一些内容,看看你是否能找到他们,诸如此类)
    • 我试过了,printf 命令不起作用。 :/ 错误出现在 scanf...但是在哪里呢? :(
    • printf 不工作?试试printf("Result: %lf\n", z)——注意最后的\n。输出到控制台的文本可能会被缓冲。
    【解决方案2】:

    我试过这段代码,它工作正常:

    #include <stdlib.h>
    #include <stdio.h>
    
    double addition(double a,double c);
    double subtraktion(double a, double c);
    double multiplikation(double a, double c);
    double division(double a, double c);
    
    
    
    int main()
    {
      double z=0, a, c;
      char b;
      printf("Insert your Numbers to calculate!");
      scanf("%lf", &a);
      scanf("%c", &b);
      scanf("%lf", &c);
      if (b == '+')
      {
        z = addition(a, c);
      }
      if (b == '-')
      {
        z = subtraktion(a, c);
      }
      if (b == '*')
      {
        z = multiplikation(a, c);
      }
      if (b == '/')
      {
        z = division(a, c);
      }
      printf("Result:  %lf\n", z);
    }
    
    double addition(double a, double c)
    {
      double z;
      z = a + c;
      return(z);
    }
    
    double subtraktion(double a, double c)
    {
      double z;
      z = a - c;
      return(z);
    }
    
    double multiplikation(double a, double c)
    {
      double z;
      z = a*c;
      return(z);
    }
    
    double division(double a, double c)
    {
      double z;
      z = a / c;
      return(z);
    }
    

    编译,然后输入类型:3+2 [Press enter],它显示了确切的结果!

    附: 我删除了“自定义”标题,然后使用了简单的 scanf 函数。 我也删除了系统(“暂停”),因为我不在 Visual Studio 下。 (所以你可能需要那个)

    所以我所做的是:
    - 删除了您的自定义标题 #include "stdafx.h"
    - 将 scanf_s 编辑为 scanf(...)
    - 添加了 z = functions()
    - printf(...\n) // 没必要

    而且它有效。

    【讨论】:

    • 使用代码块就可以了!但是为什么 fu** 不使用 Visual Studio?!
    • Visual Studio 给你什么错误?粘贴到这里
    • 它没有给我任何错误。看这里:gyazo.com/60cc8e3d9189cad741cf15aab6f92e14 只是 0!
    • 尝试用scanf替换scanf_s,并在最后一个printf中插入\n。告诉我你得到了什么
    • 我禁用了它,它可以工作!!!谢谢。为什么它不适用于那个scanf_s? :DD 最好的问候
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2018-03-02
    • 2017-06-03
    • 2016-03-22
    相关资源
    最近更新 更多