这是我在一个只能加减、而且不能连续的计算器程序基础上改的,但是不知道怎么改能让它可以连续运算,求帮助。
就直接发运算部分了。
void KeyAc
tion(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); //清零后的加数显示到数码管
}
}
一周热门 更多>