循环操作

时间:2016-12-25 16:35:20

标签: c for-loop function-calls

我想写这样的东西;

for (op1 in (plus, minus, times, divby, exponent)) {
    printf("%d", a op1 b);
}

所以实际上最终被执行的是这样的

printf("%d", a + b);
printf("%d", a - b);
printf("%d", a * b);
printf("%d", a / b);
printf("%d", a ^ b);

我怎么写这个?

2 个答案:

答案 0 :(得分:4)

由于您没有发布任何代码,我不会写任何代码,但很乐意帮助您处理一些可以转化为工作代码的概念。

  1. 编写函数以执行单独的操作(加法,减法,乘法等)。

  2. 取一个function pointers数组,用你想要执行的各个函数初始化它。

  3. 循环遍历数组并将所需的变量传递给函数调用以获得所需的输出。

  4. 类似(伪代码

    funcptr arr[SIZE] = { func1, func2, func3... };
    
    for (int i = 0; i < SIZE ; i++) {
        printf("%d\n", arr[i](a, b));
    }
    

    那就是说,只是一个注释,a ^ b 一个&#34; exponent&#34; 运算符在C中,正如您所料。它是按位异或。您可以使用pow()来完成这项工作。

    仅供参考,您可以参考this question获取相关信息。

答案 1 :(得分:3)

函数指针数组可以。

double plus(int a, int b);
double minus(int a, int b);
double times(int a, int b);
double divby(int a, int b);
double exponent(int a, int b);

typedef double (*p_fun)(int a, int b);

int main()
{
    int a = 5, b = 10;
    p_fun pa[] = {plus, minus, times, divby, exponent};
    for( int i = 0; i < sizeof(pa)/sizeof(p_fun); i++ )
    {
        printf("%f\n", pa[i](a, b));
    }
    return 0;
}