当前位置:   article > 正文

计算器(C语言)

计算器(C语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 介绍
  • 关键代码
  • 运行代码(3种)


介绍

  • 标准计数器:执行加减乘除等等
  • 科学计算器:执行分数、统计学、指数函数、对数、三角函数运算等等
  • 程序员计算器:用于二进制,八进制,十进制,十六进制等相互转换功能

二、关键代码

1、加、减、乘、除的函数调用。

void Add(int x, int y)
{
    printf("sum=%d\n", x + y);
}

void Sub(int x, int y)
{
    printf("sum=%d\n", x - y);
}

void Mlu(int x, int y)
{
    printf("sum=%d\n", x * y);
}

void Div(int x, int y)
{
    printf("sum=%d\n", x / y);
}

2、

1、运用do...while进行计算器是否运行。再用switch...case.default选择加还是减或者乘、除。

    do
    {
        menu();  
        printf("请选择:>");
        scanf("%d", &input);
        switch (input)
        {
        case 0:
            printf("退出计算器:\n");
            break;
        case 1:
            printf("加法:");
            scanf("%d %d", &x, &y);
            Add(x, y);
            break;
        case 2:
            printf("减法:");
            scanf("%d %d", &x, &y);
            Sub(x, y);
            break;
        case 3:
            printf("乘法:");
            scanf("%d %d", &x, &y);
            Mlu(x, y);
            break;
        case 4:
            printf("除法:");
            scanf("%d %d", &x, &y);
            Div(x, y);
            break;
        default:
            printf("请重新输入:\n");
            break;
        }
    } while (input);

2、Add、Sub、Mlu和Div中有相同的代码,本着优秀代码利用函数指针数组可进行优化、简单、明了,再运用if...else if...else进行判断是否退出、或者进行计算。

        printf("请选择:>");
        scanf("%d", &input);
        int(*pfArr[5])(int, int) = { Add,Sub,Mlu,Div };

        if (input > 0 && input < 5)
        {
            printf("请输入二个数:");
            scanf("%d %d", &x, &y);
            pfArr[input](x, y);
        }
        else if (input == 0)
        {
            printf("退出计算器:\n");
        }
        else
            printf("请重新输入:");

3、运用回调函数进行优化。根据input进行选择计算器中加、减、乘、除,然后传给函数指针pf

,再输入二个要计算的数,再回归Add、Sub、Mlu、Div函数里进行运算。

     void Calc(int(* pf)(int, int))
{
    int x = 0, y = 0;
    printf("请输入二个数:");
    scanf("%d %d", &x, &y);
    pf(x, y);
}   

switch (input)
        {
        case 0:
            printf("退出计算器:\n");
            break;
        case 1:
            Calc(Add);
            break;
        case 2:
            Calc(Sub);
            break;
        case 3:
            Calc(Mlu);
            break;
        case 4:
            Calc(Div);
            break;
        default:
            printf("请重新输入:\n");
            break;
        }


运行代码

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include<stdio.h>
  3. void Add(int x, int y)
  4. {
  5. printf("sum=%d\n", x + y);
  6. }
  7. void Sub(int x, int y)
  8. {
  9. printf("sum=%d\n", x - y);
  10. }
  11. void Mlu(int x, int y)
  12. {
  13. printf("sum=%d\n", x * y);
  14. }
  15. void Div(int x, int y)
  16. {
  17. printf("sum=%d\n", x / y);
  18. }
  19. void menu()
  20. {
  21. printf("*********************\n");
  22. printf("**** 1.Add 2.Sub ****\n");
  23. printf("**** 3.Mlu 4.Div ****\n");
  24. printf("**** play.jsq ****\n");
  25. printf("*********************\n");
  26. }
  27. //方法一:
  28. int main()
  29. {
  30. int x = 0, y = 0;
  31. int input = 0;
  32. do
  33. {
  34. menu();
  35. printf("请选择:>");
  36. scanf("%d", &input);
  37. switch (input)
  38. {
  39. case 0:
  40. printf("退出计算器:\n");
  41. break;
  42. case 1:
  43. printf("加法:");
  44. scanf("%d %d", &x, &y);
  45. Add(x, y);
  46. break;
  47. case 2:
  48. printf("减法:");
  49. scanf("%d %d", &x, &y);
  50. Sub(x, y);
  51. break;
  52. case 3:
  53. printf("乘法:");
  54. scanf("%d %d", &x, &y);
  55. Mlu(x, y);
  56. break;
  57. case 4:
  58. printf("除法:");
  59. scanf("%d %d", &x, &y);
  60. Div(x, y);
  61. break;
  62. default:
  63. printf("请重新输入:\n");
  64. break;
  65. }
  66. } while (input);
  67. return 0;
  68. }
  69. 方法二
  70. int main()
  71. {
  72. int x = 0,y = 0;
  73. int input = 0;
  74. do
  75. {
  76. menu();
  77. printf("请选择:>");
  78. scanf("%d", &input);
  79. int(*pfArr[5])(int, int) = { Add,Sub,Mlu,Div };
  80. if (input > 0 && input < 5)
  81. {
  82. printf("请输入二个数:");
  83. scanf("%d %d", &x, &y);
  84. pfArr[input](x, y);
  85. }
  86. else if (input == 0)
  87. {
  88. printf("退出计算器:\n");
  89. }
  90. else
  91. printf("请重新输入:");
  92. } while (input);
  93. return 0;
  94. }
  95. 方法三
  96. void Calc(int(* pf)(int, int))
  97. {
  98. int x = 0, y = 0;
  99. printf("请输入二个数:");
  100. scanf("%d %d", &x, &y);
  101. pf(x, y);
  102. }
  103. int main()
  104. {
  105. int input = 0;
  106. do
  107. {
  108. menu();
  109. printf("请选择:>");
  110. scanf("%d", &input);
  111. switch (input)
  112. {
  113. case 0:
  114. printf("退出计算器:\n");
  115. break;
  116. case 1:
  117. Calc(Add);
  118. break;
  119. case 2:
  120. Calc(Sub);
  121. break;
  122. case 3:
  123. Calc(Mlu);
  124. break;
  125. case 4:
  126. Calc(Div);
  127. break;
  128. default:
  129. printf("请重新输入:\n");
  130. break;
  131. }
  132. } while (input);
  133. return 0;
  134. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/424919
推荐阅读
相关标签
  

闽ICP备14008679号