可以+-*/
开平方~
毫米边米
华氏换摄氏~
*有一个乘数是0要重新输入一贯不为0的数才可以执行~
开平方的时候被开方小于0系统显示提示性语句
退出时去任意键退出~~
下面这些是符号的代码
WELCOME TO VSING
NUM CHAR FUNCTION
1 + 加法
2 - 减法
3 * 乘法
4 / 除法
5 spri() 开方
6 mm=>m 转换
7 oC=7oF 转换
8 ESC 退出
以下是1996年高级程序员考试的下午第5题(计算器模拟程序),写的非常的经典,但只有+,-,*和/四个运算,但可以在它的基础上修改获得其他的运算: #include <stdio.h> int add(int x,int y) {return x+y;} int sub(int x,int y) {return x-y;} int mul(int x,int y) {return x*y;} int div(int x,int y) {return x/y;} int (*func[])()={add,sub,mul,div}; int num,curch; char chtbl[]="+-*/()="; char corch[]="+-*/()=0123456789"; int getach() { int i; while(1) { curch=getchar(); if(curch==EOF) return -1; for(i=0;corch[i]&&curch!=corch[i];i++); if(i<strlen(corch)) break; } return curch; }
int getid() { int i; if(curch>='0'&&curch<='9') { for(num=0;curch>='0'&&curch<='9';getach()) num=10*num+curch-'0'; return -1; } else { for(i=0;chtbl[i];i++) if(chtbl[i]==curch) break; if(i<=5) getach(); return i; } }
int cal() { int x1,x2,x3,op1,op2,i; i=getid(); if(i==4) x1=cal(); else x1=num; op1=getid(); if(op1>=5) return x1; i=getid(); if(i==4) x2=cal(); else x2=num; op2=getid(); while(op2<=4) { i=getid(); if(i==4) x3=cal(); else x3=num; if((op1/2==0)&&(op2/2==1)) x2=(*func[op2])(x2,x3); else { x1=(*func[op1])(x1,x2); x2=x3; op1=op2; } op2=getid(); } return (*func[op1])(x1,x2); }
void main(void) { int value; printf("Please input an expression:\n"); getach(); while(curch!='=') { value=cal(); printf("The result is:%d\n",value); printf("Please input an expression:\n"); getach(); } } 不要忘了‘=’号!