//用c写一个表达式计算程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* findlastop(char* exp)
{
char* p;
(p = strrchr(exp,'+'))||(p = strrchr(exp,'-'))||(p = strrchr(exp,'*'))||(p = strrchr(exp,'/'));
return p;
}
double cal(char* exp)
{
char* p = findlastop(exp);
if(p==NULL)return atof(exp);
char op = *p;
*p = '\0';
double lv = cal(exp);
double rv = cal(p+1);
switch(op)
{
case '+':return lv+rv;
case '-':return lv-rv;
case '*':return lv*rv;
case '/':
if(rv==0)
{
puts("ERROR");
return 0;
}
return lv/rv;
}
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* findlastop(char* exp)
{
char* p;
(p = strrchr(exp,'+'))||(p = strrchr(exp,'-'))||(p = strrchr(exp,'*'))||(p = strrchr(exp,'/'));
return p;
}
double cal(char* exp)
{
char* p = findlastop(exp);
if(p==NULL)return atof(exp);
char op = *p;
*p = '\0';
double lv = cal(exp);
double rv = cal(p+1);
switch(op)
{
case '+':return lv+rv;
case '-':return lv-rv;
case '*':return lv*rv;
case '/':
if(rv==0)
{
puts("ERROR");
return 0;
}
return lv/rv;
}
}