怎么用数码管显示可连续加减乘除的计算器

2019-07-15 13:42发布

这是我在一个只能加减、而且不能连续的计算器程序基础上改的,但是不知道怎么改能让它可以连续运算,求帮助。
就直接发运算部分了。
void KeyAction(unsigned char keycode)
{
    static char oprt =0;
    static unsigned long result = 0;  //用于保存运算结果
    static unsigned long addend = 0;  //用于保存输入的加数

    if ((keycode>=0x30) && (keycode<=0x39))  //输入0-9的数字
    {
        addend = (addend*10)+(keycode-0x30); //整体十进制左移,新数字进入个位
        ShowNumber(addend);    //运算结果显示到数码管
    }






        else if (keycode == 0x26)  //向上键用作加号
    {
        oprt = 0;              //设置运算符变量
        result = addend;       //运算数存到结果中,准备进行加减
        addend = 0;            //清零运算数,准备接收下一个运算数
        ShowNumber(addend);    //刷新数码管显示
    }

    else if (keycode == 0x28)  //向下键用作减号
    {
        oprt = 1;              //设置运算符变量
        result = addend;       //运算数存到结果中,准备进行加减
        addend = 0;            //清零运算数,准备接收下一个运算数
        ShowNumber(addend);    //刷新数码管显示
    }

        else if (keycode ==0x25)
        {
             oprt=2;
                 result =addend;                                //乘
                 addend=0;
                 ShowNumber(addend);
        }

        else if (keycode ==0x27)
        {
             oprt=3;
                 result =addend;                                 //除
                 addend=0;
                 ShowNumber(addend);
        }

         
       



    else if (keycode == 0x0D)  //回车键,执行加减运算
    {
        if (oprt == 0)
        {
            result += addend;  //进行加法运算
        }
        else if(oprt==1)
        {
            result -= addend;  //进行减法运算
        }
                else if(oprt==2)
                {
                    result *=addend;        //乘
                }
                else if(oprt==3)
                {
                    result /=addend;          //除
                }
        addend = 0;
        ShowNumber(result);    //运算结果显示到数码管
    }




   else if (keycode == 0x1B)  //Esc键,清零结果
    {
        addend = 0;
        result = 0;
        ShowNumber(addend);    //清零后的加数显示到数码管
    }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。