m0_71705858 2022-06-05 13:37 采纳率: 100%
浏览 125
已结题

(简单题)程序设计基础:简易计算器的设计(急,6.5号16:00截止哦)

课题2.简易计算器的设计

问题描述:能够实现两个数的算术运算功能(加、减、乘、除)

1.基本要求

(1)依次输入第一个操作数、运算符、第二个操作数,然后输出运算结果,例如

输入: 13*8

输出: 13*8=104

(2)对错误的表达式有识别功能,例如输入: 12/0

输出: error! Please input again.

(3)除法运算的结果要保留小数位数2位;(4)当输入“exit”时,退出计算器;

(5)利用函数调用的方法实现计算器的计算功

能。

附上整个系统数据结构的定义及系统源代码,各自定义函数的声明部分中,要求对主要变量的作用进行注释,语句部分中要求对关键语句进行注释,以方便阅读和理解程序。

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-06-05 17:35
    关注

    供参考:

    #include <stdio.h>
    #include <string.h>
    
    void plus(double a, double b)
    {
        printf("%g + %g = %g\n", a, b, a + b);
    }
    void minus(double a, double b)
    {
        printf("%g - %g = %g\n", a, b, a - b);
    }
    void multiply(double a, double b)
    {
        printf("%g * %g = %g\n", a, b, a * b);
    }
    void divide(double a, double b)
    {        
        printf("%g / %g = %.2f\n", a, b, a / b);
    }
    int main(void)
    {
        int  ret;
        char in[64] = { 0 }, x[16], y[16], op[10];
        double a, b;//参加运算的两个数
        while (1)
        {
            gets(in);//输入算式
            if (strcmp(in, "exit") == 0) break; //输入“exit”时,退出计算器
            ret = sscanf(in, "%[0-9.] %[^0-9. ] %[0-9.]", x, op, y);
            if (ret == 3) {
                sscanf(x, "%lf", &a);
                sscanf(y, "%lf", &b);
                if (strcmp(op, "+") == 0)
                    plus(a, b);
                else if (strcmp(op, "-") == 0)
                    minus(a, b);
                else if (strcmp(op, "*") == 0)
                    multiply(a, b);
                else if (strcmp(op, "/") == 0 && b != 0)
                    divide(a, b);
                else
                    printf("error!Please input again.\n");
            }
            else
                printf("error!Please input again.\n");
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月6日
  • 已采纳回答 6月6日
  • 赞助了问题酬金5元 6月5日
  • 修改了问题 6月5日
  • 展开全部

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂