使用C语言函数指针数组实现简单的计算器,代码如下
#include <stdio.h>
#include <stdlib.h>
double add(double a, double b) {
return (a + b);
};
double sub(double a, double b) {
return (a - b);
};
double mul(double a, double b) {
return (a * b);
};
double divd(double a, double b) {
return (a / b);
};
int main(void) {
double (*p[4])(double, double) = {add, sub, mul, divd};
printf("Please add, sub, mul, div:\n");
char s[3];
scanf("%s", s);
int operator = 0;
double a, b;
switch (s[0])
{
case 'a':
operator = 0;
break;
case 's':
operator = 1;
break;
case 'm':
operator = 2;
break;
case 'd':
operator = 3;
break;
default:
break;
}
printf("%d\n", operator);
printf("Please input two number:\n");
scanf("%lf %lf", &a, &b);
double result = p[operator](a, b);
printf("%lf + %lf = %lf\n", a, b, result);
exit(0);
}
输入输出如下
Please add, sub, mul, div:
add
0
Please input two number:
1 5
1.000000 + 5.000000 = 1.000000
修改后代码
#include <stdio.h>
#include <stdlib.h>
double add(double a, double b) {
return (a + b);
};
double sub(double a, double b) {
return (a - b);
};
double mul(double a, double b) {
return (a * b);
};
double divd(double a, double b) {
return (a / b);
};
double (*p[4])(double, double) = {add, sub, mul, divd};
int main(void) {
printf("Please add, sub, mul, div:\n");
char s[3];
scanf("%s", s);
int operator = 0;
double a, b;
switch (s[0])
{
case 'a':
operator = 0;
break;
case 's':
operator = 1;
break;
case 'm':
operator = 2;
break;
case 'd':
operator = 3;
break;
default:
break;
}
printf("%d\n", operator);
printf("Please input two number:\n");
scanf("%lf %lf", &a, &b);
double result = p[operator](a, b);
printf("%lf + %lf = %lf\n", a, b, result);
exit(0);
}
将函数指针数组的定义放在了main函数的外面
输入输出如下
Please add, sub, mul, div:
add
0
Please input two number:
4 5
4.000000 + 5.000000 = 9.000000
GCC版本gcc (Debian 12.2.0-14) 12.2.0
标签:lf,GCC,sub,double,C语言,break,printf,operator,函数指针 From: https://www.cnblogs.com/amhara/p/17371789.html