#include <stdio.h>
// 函数原型声明
float calc(float a, float y, const char op);
float add(float a, float b);
float minus(float a, float b);
float multiple(float a, float b);
float divide(float a, float b);
float calc_using_callback(float a, float b, float (*op_callback)(float, float));
// 实现基本的数学运算
float calc(float a, float y, const char op)
{
float res;
switch (op)
{
case '+':
res = a + y;
break;
case '-':
res = a - y;
break;
case '*':
res = a * y;
break;
case '/':
if (y != 0)
res = a / y;
else
{
printf("Error: Division by zero.\n");
res = 0; // 返回默认值
}
break;
default:
printf("Invalid operator '%c'.\n", op);
res = 0; // 返回默认值
break;
}
return res;
}
// 加法
float add(float a, float b)
{
return (a + b);
}
// 减法
float minus(float a, float b)
{
return (a - b);
}
// 乘法
float multiple(float a, float b)
{
return (a * b);
}
// 除法
float divide(float a, float b)
{
if (b != 0)
return (a / b);
else
{
printf("Error: Division by zero.\n");
return 0; // 返回默认值
}
}
// 使用回调函数进行数学运算
float calc_using_callback(float a, float b, float (*op_callback)(float, float))
{
return (op_callback(a, b));
}
int main(void)
{
float res;
// 使用 calc 函数
res = calc(1.6, 2, '-');
printf("res = %.2f\n", res);
// 使用 calc_using_callback 函数
res = calc_using_callback(1.5, 2, add);
printf("res = %.2f\n", res);
res = calc_using_callback(1.5, 2, minus);
printf("res = %.2f\n", res);
res = calc_using_callback(1.5, 2, multiple);
printf("res = %.2f\n", res);
res = calc_using_callback(1.5, 2, divide);
printf("res = %.2f\n", res);
return 0;
}
标签:calc,return,函数,res,float,callback,switch,printf,回调
From: https://www.cnblogs.com/archerqvq/p/18385423