我只需要使用函数为学校项目制作一个简单的计算器。
其中一项功能是:
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));
感谢。
答案 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个输入。 a
和b
,因此函数知道它将使用哪些值。但是对于那些a
和b
它会怎样做呢。这个功能有什么线索吗?没有权利?因此,如果您想在一个函数中执行所有操作,而不是需要设置一个额外的参数,函数将从该参数中了解如何处理a
和b
。
所以,你的魔术函数应该是例如double allFuncations(double a, double b, int operation)
。现在,在此函数中,您可以设置条件:如果operation
为1
,则返回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]);
}