C语言实现计算器的两种方法

 更新时间:2022年01月28日 10:30:43   作者:猪饲夫妇、  
这篇文章主要为大家详细介绍了C语言实现计算器的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现计算器的具体代码,供大家参考,具体内容如下

C语言计算器两种方法

//一般做法
#include<stdio.h>
#include<windows.h>
//#include<assert.h>
void menu()
{
    printf("**************************\n");
    printf("****欢迎来到计算器页面****\n");
    printf("**** 1.add    2.mul  *****\n");
    printf("*****3.sub    4.div1 *****\n");
    printf("*****0.exit          *****\n");
    printf("**************************\n");
}

int add(int x, int y)
{
    return x + y;
}

int mul(int x, int y)
{
    return x * y;
}

int sub(int x, int y)
{
    return x - y;
}

int div1(int x, int y)
{
    return x / y;
}



int main()
{
    int n = 1;
    menu();
    while (n)
    {
        printf("请输入选项:\n");
        scanf("%d", &n);
        int x = 0, y = 0;
        /*printf("请输入两个整数!\n");
        scanf("%d%d", &x, &y);*/    
        //若将两个数字输入放在此处会出现输入错误时不能退出系统,而是显示“输入两个整数”的提示
        switch (n)
        {
        case 1:
            printf("请输入两个整数!\n");
            scanf("%d%d", &x, &y);
            printf("%d\n", add(x, y));
            break;
        case 2:
            printf("请输入两个整数!\n");
            scanf("%d%d", &x, &y);
            printf("%d\n", mul(x, y));
            break;
        case 3:
            printf("请输入两个整数!\n");
            scanf("%d%d", &x, &y);
            printf("%d\n", sub(x, y));
            break;
        case 4:
            printf("请输入两个整数!\n");
            scanf("%d%d", &x, &y);
            printf("%d\n", div1(x, y));
            break;
        case 0:
            printf("退出计算器!\n");
            break;
        default:
            printf("输入错误,请重新输入!\n");
        }
    }
}

//使用函数指针数组解决计算器问题

#include<stdio.h>
#include<windows.h>
//#include<assert.h>

void menu()
{
    printf("**************************\n");
    printf("****欢迎来到计算器页面****\n");
    printf("**** 1.add    2.mul  *****\n");
    printf("*****3.sub    4.div1 *****\n");
    printf("*****0.exit          *****\n");
    printf("**************************\n");
}

int add(int x, int y)
{
    return x + y;
}

int mul(int x, int y)
{
    return x * y;
}

int sub(int x, int y)
{
    return x - y;
}

int div1(int x, int y)
{
    return x / y;
}

int main()
{
    int n = 1;
    menu();
    while (n)
    {
        printf("请输入选项:\n");
        scanf("%d", &n);
        int(*arr[5])() = { 0,add,mul,sub,div1 };//转移表
        //定义一个函数指针数组,存放函数地址
        if (n >= 0 && n < 5)
        {
            int x = 0, y = 0;
            printf("请输入两个整数:>\n");
            scanf("%d%d", &x, &y);
            printf("%d\n", (*arr[n])(x,y));//输出结果
        }
        else
        {
            printf("输入有误,请重新输入!\n");
            scanf("%d", &n);
        }
    }
    system("pause");
    return 0;
}

两种方法相比,第一种相似代码较多,比较冗余;第二种代码简洁直观,程序效率高。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解C++的反调试技术与绕过手法

    详解C++的反调试技术与绕过手法

    反调试技术,恶意代码会用它识别自身是否被调试,或者让调试器失效,给反病毒工程师们制造麻烦,拉长提取特征码的时间线,本章将具体总结常见的反调试基础的实现原理以及如何过掉这些反调试手段,从而让我们能够继续分析恶意代码
    2021-06-06
  • C++中的按位与&、按位与或|、按位异或^运算符详解

    C++中的按位与&、按位与或|、按位异或^运算符详解

    这篇文章主要介绍了C++中的按位与&、按位与或|、按位异或^运算符,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • 深入理解堆排序及其分析

    深入理解堆排序及其分析

    本篇文章是对堆排进行了详细的分析以及介绍,需要的朋友参考下
    2013-05-05
  • c++之解决char转string时出现的乱码问题

    c++之解决char转string时出现的乱码问题

    这篇文章主要介绍了c++之解决char转string时出现的乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++中使用FFmpeg适配自定义编码器的实现方法

    C++中使用FFmpeg适配自定义编码器的实现方法

    本文介绍了在C++中使用FFmpeg库进行自定义编码器适配的实现方法。文章通过具体的代码示例,介绍了FFmpeg的基本使用方法和自定义编码器的实现过程,帮助读者了解如何在C++中进行音视频编码和解码的开发工作,并能够实现自定义的编码器适配
    2023-04-04
  • C语言八皇后问题解决方法示例【暴力法与回溯法】

    C语言八皇后问题解决方法示例【暴力法与回溯法】

    这篇文章主要介绍了C语言八皇后问题解决方法,简单描述了八皇后问题并结合实例形式分析了C语言基于暴力法与回溯法解决八皇后的具体操作技巧,需要的朋友可以参考下
    2018-01-01
  • C语言程序设计谭浩强第五版课后答案(第三章习题答案)

    C语言程序设计谭浩强第五版课后答案(第三章习题答案)

    这篇文章主要介绍了C语言程序设计谭浩强第五版课后答案(第三章习题答案),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-04-04
  • C++实现中缀转后缀的示例详解

    C++实现中缀转后缀的示例详解

    这篇文章主要为大家详细介绍了如何利用C++实现中缀转后缀的问题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • c++模板自定义数组

    c++模板自定义数组

    这篇文章主要介绍了c++模板自定义数组,通过制造通用模板,创建自定义的数组展开文章相关内容,具有一的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • QT结合百度Ai实现车牌识别

    QT结合百度Ai实现车牌识别

    当下的人工智能势头很盛,本文主要介绍了QT结合百度Ai实现车牌识别,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03

最新评论