基于c语言的四则运算计算器代码实现方法(提供三种方案) 您所在的位置:网站首页 c语言计算器代码switch加减乘除混合运算 基于c语言的四则运算计算器代码实现方法(提供三种方案)

基于c语言的四则运算计算器代码实现方法(提供三种方案)

2024-07-14 16:39| 来源: 网络整理| 查看: 265

本次介绍基于c语言的四则运算计算器实现,该程序可进行日常的加、减、乘、除运算。共有三种方案,第一种为简易逻辑下的代码实现,该程序较为繁琐,但容易理解;第二种为基于函数指针传参形式下的代码实现,较第一种方案进行了一定程度的优化,将四则运算进行了封装,通过指针进行调用;第三种为基于函数指针数组传参,较第二种方案进行了更加深度的优化,将四则运算封装成为了一个函数指针数组。

一、方案介绍及代码 方案一  简易逻辑下的代码实现

该方案最为简单,先放置菜单,供用户选择运算形式,随后读取用户输入的两个操作数,通过switch函数分别进行不同的运算。四则运算之间相对独立,彼此之间并无联系,逻辑简单,易于理解。代码实现如下:

#include void menu() { printf("1.加法 2.减法 3.乘法 4.除法 0.退出游戏"); } int add(int x, int y) { return x + y; } int sub(int x, int y) { return x - y; } int mul(int x, int y) { return x * y; } int div(int x, int y) { return x / y; } int main() { int input = 0; do { int x = 0; int y = 0; menu(); printf("请选择>"); scanf_s("%d", &input); switch (input) { case 1: printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("%d\n",add(x, y)); break; case 2: printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("%d\n", sub(x, y)); break; case 3: printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("%d\n", mul(x, y)); break; case 4: printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("%d\n", div(x, y)); break; case 0: printf("退出游戏\n"); break; default: printf("输入错误\n"); } } while (input); }  方案二  基于函数指针传参形式下的代码实现

该方案较第一种简单了一些,具体操作为将主函数中的四则运算通过函数指针封装为了一个cal函数,由此在主函数中仅需要调用cal函数即可,具体运算由cal函数进行调用。

代码实现如下:

其中语句"int cal(int(*pf)(int x, int y))"表示cal函数调用了一个返回值为int型、其两个操作数均为int型的函数,且cal返回值为int型。

#include void menu() { printf("1.加法 2.减法 3.乘法 4.除法 0.退出游戏"); } int cal(int(*pf)(int x, int y))//进行函数指针传参 { int x = 0; int y = 0; int ret = 0; printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("结果是:%d\n", pf(x, y)); } int add(int x, int y) { return x + y; } int sub(int x, int y) { return x - y; } int mul(int x, int y) { return x * y; } int div(int x, int y) { return x / y; } int main() { int input = 0; do { menu(); printf("请选择>"); scanf_s("%d", &input); switch (input) { case 1: cal(add); break; case 2: cal(sub); break; case 3: cal(mul); break; case 4: cal(div); break; case 0: printf("退出游戏\n"); break; default: printf("输入错误\n"); } } while (input); } 方案三  基于函数指针数组传参

本方案是最为优化的代码实现,将四则运算封装成了一个函数指针数组,通过用户输入的值直接调用数组中对应的运算的地址,四则运算直接成为了一个统一的整体,不需要通过switch函数进行分类,对于用户使用或调试时较为容易。代码如下:

#include void menu() { printf("1.加法 2.减法 3.乘法 4.除法 0.退出游戏"); } int add(int x, int y) { return x + y; } int sub(int x, int y) { return x - y; } int mul(int x, int y) { return x * y; } int div(int x, int y) { return x / y; } int main() { int (*pfarr[])(int, int) = { 0,add,sub,mul,div }; int input = 0; do { menu(); printf("请选择>"); scanf_s("%d", &input); if (input > 0 && input < 5) { int x = 0; int y = 0; printf("请输入两个操作数>"); scanf_s("%d %d", &x, &y); printf("结果是:%d\n", pfarr[input](x, y)); } else if(input==0) { printf("退出游戏\n"); break; } else { printf("输入错误\n"); } } while (input); } 二、 运行仿真

以上三种方案均能呈现同一种效果,只是实现方式不同而已。代码运行结果呈现如下:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有