编译通过:
#define ESC 27
#define Bspace 8
#define Space 32
#define Enter 13
#include<bios.h>
#include<stdio.h>
char Key;
long Num1=0,Num2;
void Ip1(void);
void Ip2(void);
void Ip3(void);
void Ip4(void);
void main()
{clrscr();
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==ESC) break;
if((int)Key==Space) {Num1=0;continue;}
if((int)Key==Enter) {Num1=0;printf("\n");continue;}
if((int)Key==Bspace) {Num1=(Num1-Num1%10)/10;continue;}
if(Key>='0'&&Key<='9')
Num1=(Num1)*10+Key-'0';
else
loop: switch(Key)
{case ‘+’: Ip1(); goto loop;
case ‘-’: Ip2(); goto loop;
case ‘*’: Ip3(); goto loop;
case ‘/’: Ip4(); goto loop;
case ‘=’: printf("%ld",Num1);break;
default:Key=bioskey(0);goto loop;
}
}
}
void Ip1()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2+Num1;break;}
}
}
void Ip2()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2-Num1;break;}
}
}
void Ip3()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2*Num1;break;}
}
}
void Ip4()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2/Num1;break;}
}
}
输入:1+2+3+4+5+6+7+8+9+10
再按”=“;
最后输出是:1+2+3+4+5+6+7+8+9+10=55
#define ESC 27
#define Bspace 8
#define Space 32
#define Enter 13
#include<bios.h>
#include<stdio.h>
char Key;
long Num1=0,Num2;
void Ip1(void);
void Ip2(void);
void Ip3(void);
void Ip4(void);
void main()
{clrscr();
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==ESC) break;
if((int)Key==Space) {Num1=0;continue;}
if((int)Key==Enter) {Num1=0;printf("\n");continue;}
if((int)Key==Bspace) {Num1=(Num1-Num1%10)/10;continue;}
if(Key>='0'&&Key<='9')
Num1=(Num1)*10+Key-'0';
else
loop: switch(Key)
{case ‘+’: Ip1(); goto loop;
case ‘-’: Ip2(); goto loop;
case ‘*’: Ip3(); goto loop;
case ‘/’: Ip4(); goto loop;
case ‘=’: printf("%ld",Num1);break;
default:Key=bioskey(0);goto loop;
}
}
}
void Ip1()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2+Num1;break;}
}
}
void Ip2()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2-Num1;break;}
}
}
void Ip3()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2*Num1;break;}
}
}
void Ip4()
{Num2=0;
while(1)
if(bioskey(1))
{Key=bioskey(0);
printf("%c",Key);
if((int)Key==Bspace) Num2=(Num2-Num2%10)/10;
if(Key>='0'&&Key<='9')
Num2=(Num2)*10+Key-'0';
else {Num1=Num2/Num1;break;}
}
}
输入:1+2+3+4+5+6+7+8+9+10
再按”=“;
最后输出是:1+2+3+4+5+6+7+8+9+10=55