1

我正在编写一些应该使用用户选择的数学函数(来自 math.h)的代码。我有类似的东西

printf("If you want to use sin, press 's'\n"
       "If you want to use cosh, press 'c'\n");
do choice = getchar();
while (choice != 's' && choice != 'c');

如何存储用户选择的功能?我想将它放在某个变量中fun,然后通过编写在计算中使用它fun(x),但不知道如何做到这一点。请帮忙!

4

2 回答 2

1
double (*proc)(double x) = NULL;
if (choice == 's') proc = sin;
else if (choice == 'c') proc = cosh;
// ...

double y = proc(x):
于 2012-12-08T16:54:50.293 回答
0

你需要函数指针。函数指针就像指向您可以执行的代码的指针。因此,例如,您可以有一个函数指针,它接受所有接受一个 double 并返回一个的函数(例如 sin、cos、sqrt、tan、arctan 等)。在这些类型的菜单场景中,使用数组通常是最好的:

double (*funcs)(double)[] = {&sin, &cosh}
char choice;
printf("If you want to use sin, press '1'\n"
       "If you want to use cosh, press '2'\n");
do choice = getchar();
while (choice != '1' && choice != '2');
char choice2[2] = {choice, '\0'};
funcs[atoi(choice2)-1](operand);
于 2012-12-08T17:09:11.530 回答