# include & ltstdio.h & gt
# include & ltconio.h & gt
# include & ltstdlib.h & gt
#定義ADD '+'
#定義子元素'-'
#定義MUL '* '
#定義DIV '/'
#定義CLR '\b '
#define DEL 127
#將ac' y'//y定義為ac鍵。
#定義cls()系統(“cls”)
/*
Oper1:累加器,存儲計算結果;oper2:寄存器,存儲該輸入*/
double oper1,oper2
/*
Op:運算符編號:數字輸入緩沖器ptr:用於此計算的數字指針。
Idx:數字索引*/
char op,num[100],* ptr = num
int idx = 0;
// init:初始化累加器。
void初始化()
{
op = ADD
oper 1 = 0;
}
// calc執行四次運算,結果存儲在累加器中。
void calc()
{
開關
{
案例添加:
oper 1+= oper 2;
打破;
案例子案例:
oper 1-= oper 2;
打破;
案例MUL:
oper 1 * = oper 2;
打破;
案例部門:
如果(!操作2)
{
puts("錯誤!");
退出(1);
}
其他
oper 1/= oper 2;
}
}
//向數字緩存寫入壹個位。
void adddigit(字符dgt)
{
if(idx+1 & lt;= 98)
{
* ptr = dgt
idx++;
ptr++;
}
}
//從數字緩存中刪除壹個位
void deldigit()
{
如果(idx - 1)
{
ptr-;
idx-;
}
}
int main()
{
/*
Lastk:存儲最後的輸入類型0:數字1:運算符*/
int lastk = 0;
init();
while (1)
{
char key = getch();
開關(鑰匙)
{
案例編號:
案例CLR:
//退格
if (lastk == 0)
{
printf(" \ b \ b ");
deldigit();
}
打破;
案例AC:
oper 2 = 0;
init();
cls();
idx = 0,ptr = num
打破;
案例添加:
案例子案例:
案例MUL:
案例部門:
//運算符
if (lastk == 0)
{
adddigit(0);
oper 2 = atof(num);
calc();
cls();
printf("%f ",oper 1);
op = key
idx = 0,ptr = num
}
其他
op = key
lastk = 1;
打破;
//=符號
大小寫' \n ':
if (lastk == 0)
{
adddigit(0);
oper 2 = atof(num);
calc();
cls();
printf("%f ",oper 1);
idx = 0,ptr = num
lastk = 1;
}
打破;
默認值:
//輸入了壹個數字。
if(key & gt;= ' 0 ' & amp& ampkey & lt= '9' || key == ',')
{
if (lastk)
cls();
adddigit(鍵);
printf("%c ",key);
lastk = 0;
}
}
}
}g