上课偷偷玩手机写的一个计算器(=・ω・=)
可以四则运算,支持括号
例子:
输入: 100 + 200
输出: 300
-----------------------------------------
#include<stdio.h>
#include<stdlib.h>
char str[1024];
char peek;
int i = -1;
void next() {
peek = str[++i];
if(peek==' ')
next();
}
double add_sub();
double mul_div();
double jop() {
next();
if (peek >= '0' && peek <= '9') {
char num[24];
int a=0;
while (peek >= '0' && peek <= '9') {
num[a]=peek;
a++;
next();
}
num[a]='\0';
i--;
return atof(num);
}
else if(peek=='+'||peek=='-'||peek=='*'||peek=='/')
{
return peek== '-' ? -jop() : jop();
}
else if(peek=='(')
{
double v = add_sub();
if(peek==')')
{
next();
return v;
}
printf("语法错误,缺少右括号\n");
return 0;
}
else
{
printf("语法错误!");
return 0;
}
}
double mul_div()
{
double val = jop();
while(peek=='*'||peek=='/')
{
if(peek=='*')
val *=jop();
else
val /=jop();
}
return val;
}
double add_sub()
{
double val = mul_div();
while(peek=='+'||peek=='-')
{
if(peek=='+')
val +=mul_div();
else
val -=mul_div();
}
return val;
}
int main() {
printf("输入一个算术表达式:\n");
scanf("%s", str);
printf("计算结果=%f\n", add_sub());
}
|