问题 : 超简计算器
时间限制: 1 Sec 内存限制: 128 MB
提交: 4012 解决: 1278
[提交][状态][讨论版]
题目描述
编写程序计算给定表达式的值并输出,表达式中的操作数均为浮点数,运算符只包括+、-、*和/,表达式从左向右求值(所有运算符的优先级都一样)。
输入
一个合法的算术表达式
输出
表达式的值,输出保留小数点后3位数字
样例输入
1+2.5*3
样例输出
10.500
提示
注意:表达式长度不定,其中运算符个数也不定,但只包含+、-、*及/。
为使scanf函数正确检测表达式结束,可以接受并判断其返回值,若返回值为EOF,则表示表达式结束。例如:
while(scanf("%lf",&r)!=EOF);表示在键盘输入没结束前,始终继续循环输入。
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
double num = 0;
double res = 0;
int jg = 1;
char ch = '\0';
scanf("%lf", &res);
while ((jg = scanf("%c", &ch)) != EOF && jg != 0) {
if ((jg = scanf("%lf", &num)) == EOF || jg == 0) {
break;
}
if (ch == '+') {
res += num;
}
else if(ch == '-')
{
res -= num;
}
else if (ch == '*')
{
res *= num;
}
else if (ch == '/')
{
res /= num;
}
}
printf("%.3lf\n", res);
return 0;
}