我正在尝试找到一种使用循环的方法来计算 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/