c - 有没有办法循环使用 C 中的四个基本操作?

标签 c loops iteration

我正在尝试找到一种使用循环的方法来计算 3 个运算符和 4 个整数的每个组合的结果,我想知道是否有一种方法可以让循环运行 4 次,每次都使用不同的运营商。

它的目的是像这样工作,但我不确定它有多大可能。

int a = 2;
int b = 3;

for (int i = 0; i < 4; i++) {
   if (i == 0) {
      operator = '+';
   } else if (i == 1) {
      operator = '-';
   } else if (i == 2) {
      operator = '*';
   } else if (i == 3) {
      operator = '/';
   }

   printf("Result: %d\n", a operator b);
}

输出将打印结果 5、-1、6 和 0...

但正如我所读到的,运算符不能放入变量中,这就是我陷入困境的地方。

如果有人能给我一些关于如何解决这个问题的见解,我将不胜感激!

最佳答案

您可以像这样使用函数指针:

#include <stdio.h>

#define OP_NUM 4

typedef int(*op_f)(int, int);

typedef struct _ops {
        op_f fp;
        char * ops;
}ops;

int add (int a, int b) {
        return a + b;
}

int sub (int a, int b) {
        return a - b;
}

int mul (int a, int b) {
        return a * b;
}

int dv (int a, int b) {
        return a / b;
}

int main (void) {
        ops st_op[OP_NUM] = {   {add, "+"},
                                {sub, "-"},
                                {mul, "*"},
                                {dv, "/"}
                            };

        int a = 2;
        int b = 3;

        for (int i = 0; i < OP_NUM; i++) {
                printf ("%d %s %d : %d\n", a, st_op[i].ops, b, st_op[i].fp(a, b));
        }
        return 0;
}

输出:

# ./a.out
2 + 3 : 5
2 - 3 : -1
2 * 3 : 6
2 / 3 : 0

关于c - 有没有办法循环使用 C 中的四个基本操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58108738/

相关文章:

C "->"(Arrow Operator) 结构简单的段错误

c - 有没有办法在 C 中循环遍历具有不同类型元素的结构?

python - 在 Python 中迭代多个列表项的组合

java - 根据相似索引收集列表集合

c - 我如何确定这是 latin1 还是 utf8?

c - 有一个我不知道的错误

c - uint vs. unsigned int - 为什么不用 typedef uint?

excel - 如何在Excel中的多个工作簿的相同单元格中选择变量

python - 递归代替循环n次

python-3.x - 在 Python 3 中自动测试反向字符串