Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带函数的计算器_C_Function_Calculator - Fatal编程技术网

C 带函数的计算器

C 带函数的计算器,c,function,calculator,C,Function,Calculator,我想编一个简单的计算器。计算是在函数中进行的。 我的问题是,结果总是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 d

我想编一个简单的计算器。计算是在函数中进行的。 我的问题是,结果总是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);
}
#包括“stdafx.h”
#包括
#包括
双加(双a,双c);
双副耙(双a、双c);
双重多重激励(双重a、双重c);
双除法(双a,双c);
int main()
{
双z=0,a,c;
字符b;
printf(“插入要计算的数字!”);
扫描单位(“%lf”和a);
scanf_s(“%c”和“b”);
扫描频率(“%lf”、&c);
如果(b=='+')
{
添加(a,c);
}
如果(b='-')
{
副倾斜度(a,c);
}
如果(b=='*')
{
多目标(a、c);
}
如果(b=='/'))
{
分部(a、c);
}
printf(“结果:%lf”,z);
系统(“暂停”);
}
双加(双a,双c)
{
双z;
z=a+c;
返回(z);
}
双副耙(双a、双c)
{
双z;
z=a-c;
返回(z);
}
双重多重激励(双重a、双重c)
{
双z;
z=a*c;
返回(z);
}
双除法(双a,双c)
{
双z;
z=空调;
返回(z);
}

我使用Visual Studio 2013编程。我试图调试该程序,但无法运行。请原谅我的英语不好。

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

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

 }
你应该这样做

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

 }

同样,对于所有其他情况

您没有将操作结果指定给
z
。而不是:

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

 }
你应该这样做

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

 }

同样地,对于所有其他情况,我尝试了此代码,它工作正常:

#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);
}
#包括
#包括
双加(双a,双c);
双副耙(双a、双c);
双重多重激励(双重a、双重c);
双除法(双a,双c);
int main()
{
双z=0,a,c;
字符b;
printf(“插入要计算的数字!”);
scanf(“%lf”、&a);
scanf(“%c”和“b”);
scanf(“%lf”、&c);
如果(b=='+')
{
z=加法(a,c);
}
如果(b='-')
{
z=副倾斜度(a,c);
}
如果(b=='*')
{
z=多重激励(a,c);
}
如果(b=='/'))
{
z=除法(a,c);
}
printf(“结果:%lf\n”,z);
}
双加(双a,双c)
{
双z;
z=a+c;
返回(z);
}
双副耙(双a、双c)
{
双z;
z=a-c;
返回(z);
}
双重多重激励(双重a、双重c)
{
双z;
z=a*c;
返回(z);
}
双除法(双a,双c)
{
双z;
z=空调;
返回(z);
}
编译,然后输入类型:3+2[按enter键],它会显示精确的结果

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

所以我所做的是:
删除自定义标题#包括“stdafx.h”
将扫描编辑为扫描(…)
-添加了z=函数()
-printf(…\n)//不需要


它可以正常工作。

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

#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);
}
#包括
#包括
双加(双a,双c);
双副耙(双a、双c);
双重多重激励(双重a、双重c);
双除法(双a,双c);
int main()
{
双z=0,a,c;
字符b;
printf(“插入要计算的数字!”);
scanf(“%lf”、&a);
scanf(“%c”和“b”);
scanf(“%lf”、&c);
如果(b=='+')
{
z=加法(a,c);
}
如果(b='-')
{
z=副倾斜度(a,c);
}
如果(b=='*')
{
z=多重激励(a,c);
}
如果(b=='/'))
{
z=除法(a,c);
}
printf(“结果:%lf\n”,z);
}
双加(双a,双c)
{
双z;
z=a+c;
返回(z);
}
双副耙(双a、双c)
{
双z;
z=a-c;
返回(z);
}
双重多重激励(双重a、双重c)
{
双z;
z=a*c;
返回(z);
}
双除法(双a,双c)
{
双z;
z=空调;
返回(z);
}
编译,然后输入类型:3+2[按enter键],它会显示精确的结果

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

所以我所做的是:
删除自定义标题#包括“stdafx.h”
将扫描编辑为扫描(…)
-添加了z=函数()
-printf(…\n)//不需要



它可以工作。

即使有了更改?虽然这可能不是唯一的问题,但它肯定是一件会导致结果仍然为0的事情。是的,我将z=添加到所有if情况中。我可以用%c或%s扫描运算符吗?我的c有点生锈,我只是注意到缺少赋值。我会尝试缩小问题发生的范围,(例如,在
if
s中打印一些东西,以查看您是否正在联系他们,诸如此类的事情)我尝试过,printf命令不起作用。:/错误出现在scanf…但是在哪里?:(
printf
不起作用?尝试
printf(“结果:%lf\n”,z)
--请注意结尾处的
\n
。控制台的文本输出可能会被缓冲。即使有更改?虽然这可能不是唯一的问题,但肯定是一件事会导致结果仍然为0是我在所有if情况下都添加了z=。我可以用%c或%s扫描运算符吗?我的c有点生锈,我只是注意到缺少赋值。我“我试着缩小问题发生的范围(例如在
if
s中打印一些东西,看看你是否能找到他们,诸如此类的事情)我试过了,printf命令不起作用。:/错误出现在scanf…但是在哪里?:(
printf
不起作用?试着
printf(“结果:%lf\n”,z)
--注意结尾处的
\n
。控制台的文本输出可能会被缓冲。使用代码块它可以工作!但是为什么fu**不使用visual studio?!visual studio会给您带来什么错误?粘贴到此处它不会给我错误。看这里:仅0!尝试用scanf替换scanf,并在最后一次打印中插入\n。告诉我您得到了什么