当前位置: 首页 > news >正文

函数指针数组

#include <stdio.h>// 加法
int addition(double num1, double num2, double *res);
// 减法
int subtraction(double num1, double num2, double *res);
// 乘法
int multiplication(double num1, double num2, double *res);
// 除法
int division(double num1, double num2, double *res);int main(void) {/** 定义加、减、乘、除四个函数* 用户键盘录入三个数字* 前两个表示参与计算的数字* 第三个数字表示调用的函数* */double num1;double num2;int calc;double answer;printf("输入需要计算的两个数字:");scanf("%lf %lf", &num1, &num2);printf("1) +\t2) -\t3) *\t4) /\t5) quit\n""输入需要的计算符号:");scanf("%d", &calc);int (*add)(double, double, double *) = addition;int (*sub)(double, double, double *) = subtraction;int (*mul)(double, double, double *) = multiplication;int (*div)(double, double, double *) = division;switch (calc) {case 1:add(num1, num2, &answer);printf("%lf + %lf = %lf\n", num1, num2, answer);break;case 2:sub(num1, num2, &answer);printf("%lf - %lf = %lf\n", num1, num2, answer);break;case 3:mul(num1, num2, &answer);printf("%lf * %lf = %lf\n", num1, num2, answer);break;case 4:if (div(num1, num2, &answer) == 1) {printf("除数不能为0!\n");} else {printf("%lf / %lf = %lf\n", num1, num2, answer);}break;default:printf("运算符无效!\n");break;}return 0;
}int addition(double num1, double num2, double *res) {*res = num1 + num2;return 0;
}int subtraction(double num1, double num2, double *res) {*res = num1 - num2;return 0;
}int multiplication(double num1, double num2, double *res) {*res = num1 * num2;return 0;
}int division(double num1, double num2, double *res) {if (num2 == 0) {return 1;}*res = num1 / num2;return 0;
}
#include <stdio.h>// 运算函数
int operate(double number1, double number2, char calc, double *answer);int main(void) {/** 定义一个运算函数* */double num1, num2, answer;char calc;printf("输入需要计算的两个数字:");scanf("%lf %lf", &num1, &num2);getchar();printf("1) +\t2) -\t3) *\t4) /\tq) quit\n""输入需要的计算符号:");scanf("%c", &calc);int flag = operate(num1, num2, calc, &answer);if (flag == 1) {printf("除数不能为0!\n");} else if (flag == -1) {printf("运算符无效!\n");} else {printf("%lf %c %lf = %lf\n", num1, calc, num2, answer);}return 0;
}int operate(double number1, double number2, char calc, double *answer) {switch (calc) {case '+':*answer = number1 + number2;break;case '-':*answer = number1 - number2;break;case '*':*answer = number1 * number2;break;case '/':if (number2 == 0) {return 1;}*answer = number1 / number2;break;default:return -1;}return 0;
}
#include <stdio.h>// 加法
int addition(double num1, double num2, double *res, char *calc);
// 减法
int subtraction(double num1, double num2, double *res, char *calc);
// 乘法
int multiplication(double num1, double num2, double *res, char *calc);
// 除法
int division(double num1, double num2, double *res, char *calc);int main(void) {/** 定义加、减、乘、除四个函数* 用户键盘录入三个数字* 前两个表示参与计算的数字* 第三个数字表示调用的函数* */// 函数指针数组int (*arr[4])(double, double, double *, char *) = {addition, subtraction,multiplication, division};double num1;double num2;int choose;double answer;char calc;printf("输入需要计算的两个数字:");scanf("%lf %lf", &num1, &num2);printf("1) +\t2) -\t3) *\t4) /\t5) quit\n""输入需要的计算符号:");scanf("%d", &choose);int flag = (arr[choose - 1])(num1, num2, &answer, &calc);if (flag == 1) {printf("除数不能为0!\n");} else {printf("%lf %c %lf = %lf\n", num1, calc, num2, answer);}return 0;
}int addition(double num1, double num2, double *res, char *calc) {*res = num1 + num2;*calc = '+';return 0;
}int subtraction(double num1, double num2, double *res, char *calc) {*res = num1 - num2;*calc = '-';return 0;
}int multiplication(double num1, double num2, double *res, char *calc) {*res = num1 * num2;*calc = '*';return 0;
}int division(double num1, double num2, double *res, char *calc) {if (num2 == 0) {return 1;}*res = num1 / num2;*calc = '/';return 0;
}
http://www.jsqmd.com/news/254775/

相关文章:

  • 基于改进遗传算法的配电网故障定位Matlab代码
  • 2026国内最新纯棉绣花面料品牌top10推荐!广东广州等地优质纯棉绣花面料企业权威榜单发布,品质工艺双优助力服饰升级国内 - 品牌推荐2026
  • springboot大学生课程提醒系统_1fj8z5gv
  • 瑞芯微(EASY EAI)RV1126B 车辆检测
  • 2026最新冲锋衣面料推荐!国内优质冲锋衣面料权威榜单发布,品质功能双优助力户外服饰升级冲锋衣面料推荐 - 品牌推荐2026
  • 别一上来就 DFS:聊聊「以图判树」背后的算法直觉(Graph Valid Tree)
  • 亲测好用10个AI论文网站,专科生搞定毕业论文必备!
  • 别一听区块链就上来挖矿:聊聊它在智能运维里的“正经用法”
  • 2026最新涤盖棉面料推荐!国内优质涤盖棉权威榜单发布,品质与功能双优助力服饰升级涤盖棉面料公司推荐 - 品牌推荐2026
  • Kafka 消息不丢、不乱、不崩的秘密——聊聊我是怎么把 Kafka 的“稳定性”一点点熬出来的
  • Python 与 AI 药物开发:从试验室到代码实践的深度探索
  • 2026最新产业高质量发展服务推荐!国内农业特色产业/区域特色农业/农产品品牌建设权威指南发布,专业赋能助力乡村振兴 - 品牌推荐2026
  • 2026最新空气层面料推荐!国内优质空气层面料权威榜单发布,品质与功能兼具助力纺织行业升级 空气层面料推荐 - 品牌推荐2026
  • 生成式AI在教育资源生成中的应用探索
  • java+vue基于Spring Boot的工程流程控制系统_x147jv9t
  • python基于django的智慧党建平台设计与实现
  • Python 在 AI 芯片管理中的实战指南——从监控调度到智能优化,让异构算力不再“黑盒”
  • 2026最新校服面料推荐!行业权威榜单发布,安全舒适功能性面料品牌推荐 - 品牌推荐2026
  • springboot-vue大学生社团管理系统_254x2yk1
  • 2026最新农业区域公用品牌服务推荐!国内优质农业品牌建设机构权威榜单发布,助力中国农业特色产业/农产品/地理标志农产品高质量发展 - 品牌推荐2026
  • Qwen-14B 推理和训练的显存占用对比
  • 2026最新服装面料推荐!国内优质面料品牌权威榜单发布,资质与品质双优助力服饰产业升级 国内/山西/上海服装面料服务公司推荐 - 品牌推荐2026
  • 救命神器2026继续教育TOP8AI论文工具测评
  • 安卓神器 --- 字典 之 linguee
  • 深入解析:零知识证明:不泄露秘密也能自证
  • 2026最新农业品牌打造/区域公用品牌/农业区域公用品牌/区域公共品牌/产业振兴/产业高质量发展/农业名牌访谈录推荐 - 品牌推荐2026
  • 闲置支付宝消费券回收,你的闲置优惠居然能变钱 - 京顺回收
  • 救命神器!专科生必看10款一键生成论文工具TOP10测评
  • 提示工程架构师入门:有效提示创作的5个常见问题,解答全在这里!
  • 贪吃蛇整完了!