一次执行多个功能

时间:2017-03-30 03:25:14

标签: c function

我只需要使用函数为学校项目制作一个简单的计算器。

其中一项功能是:

double addition(double a, double b)
{
    return a + b;
}

我打电话给它并显示结果:

printf( "Addition: %.2lf\n", addition(x,y));

我还有其他减法,乘法和除法功能。

我需要分别执行其中的每一项,然后立即执行所有这些操作。

如何在一个函数中集成所有这些函数,如下所示:

printf( "All of the results %.2lf\n", allfunctions(x,y));

有可能吗?

我试图避免做这样的事情:

printf( "Addition: %.2lf\n", addition(x,y));
printf( "Substraction: %.2lf\n", substraction(x,y));

感谢。

4 个答案:

答案 0 :(得分:4)

您可以通过创建allfunctions(x,y)并在allfunctions(x,y)内调用您要执行的其他功能来实现。示例:

功能1:add(double x, double y) { printf( "Addition: %.2lf\n", x + y ); }

功能2:divide(double x, double y) { printf( "Division: %.2lf\n", x / y ); }

所有功能:allfunctions(double x, double y) { add(x,y); divide(x,y); }

然后您只需要拨打allfunctions(x,y)

答案 1 :(得分:3)

你可以做的一件事就是声明一个指向函数的指针数组:

double (*arith_op[4])(double, double) = {addition, subtraction, multiplication, division};
const char *strings[4] = {"addition", "subtraction", "multiplication", "division"};

for (i = 0; i < 4; i++)
{
    printf("Result of %s is %.2lf\n", strings[i], arith_op[i](x,y));
}

这是处理问题的一种方法。

答案 2 :(得分:0)

好吧,比如说,你创造了一个神奇的功能来完成你的所有操作。函数的名称是double allFunctions(double a, double b)

如果问题是,该功能只有2个输入。 ab,因此函数知道它将使用哪些值。但是对于那些ab它会怎样做呢。这个功能有什么线索吗?没有权利?因此,如果您想在一个函数中执行所有操作,而不是需要设置一个额外的参数,函数将从该参数中了解如何处理ab

所以,你的魔术函数应该是例如double allFuncations(double a, double b, int operation)。现在,在此函数中,您可以设置条件:如果operation1,则返回add结果,如果其2,则返回subtract结果,依此类推。那么,你将如何称呼这个新功能?

printf( "Addition: %.2lf\n", allFuncations(x,y, 1));//for addition
printf( "Substraction: %.2lf\n", allFuncations(x,y, 2));//for subtraction

顺便说一句,您甚至可以使用char类型数据代替int来获取更易读的operation变量。例如:

新功能?

printf( "Addition: %.2lf\n", allFuncations(x,y, '+'));//for addition
printf( "Substraction: %.2lf\n", allFuncations(x,y, '-'));//for subtraction

当您的函数定义为double allFunction(double a, double b, char operation)

最后,这就是你可以在一个函数中完成所有操作的方法。但是,如果为每个操作创建单独的函数,则没有任何错误。没有什么可以在那里感到内疚。此外,将所有结果放在一行可能会减少对代码的控制。

答案 3 :(得分:0)

#define NUMBER_OF_FUNCTIONS 4 //assuming add subtract multiply divide 
double[NUMBER_OF_FUNCTIONS] allFunctions(double x,double y) {
  double answer[NUMBER_OF_FUNCTIONS];
  int i = 0;
  answer[i++]=addition(x,y);
  answer[i++]=subtraction(x,y);
  answer[i++]=multiplication(x,y);
  answer[i++]=division(x,y);
  return answer;
}

// ...
  {
    double a[NUMBER_OF_FUNCTIONS] = allFunctions(x,y);
    printf("Addition: %2lf\nSubtraction: %2lf\nMultiplication: %2lf\nDivision: %2lf\n",*a,a[1],a[2],a[3]);
  }