#include <stdio.h> #include <ctype.h> double factor_value(); double term_value(); double expression_value(); int main() { char ch; while ((ch=getchar())!=EOF) { ungetc(ch,stdin); printf("%.3lf\n",expression_value()); getchar(); } } //输入:(2+3)*(5+7)+9/3 //输出: 63 double expression_value() //求一个表达式的值 何为表达式:表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。 { double result=term_value(); //求第一项的值 int more=1; while (more) { char op=getchar(); //读取一个字符 if (op=='+'||op=='-') { double value=term_value(); if (op=='+') result+=value; else result-=value; } else //如果不是字符就退回 { ungetc(op,stdin); //把该参数的字符退回到缓冲区 more=0; } } return result; } double term_value() //求一个项的值 何为项:数学式子中的某一项式 { double result=factor_value(); //求第一个因子的值 while (1) { char op=getchar(); if (op=='*'||op=='/') { double value=factor_value(); if (op=='*') result*=value; else result/=value; } else { ungetc(op,stdin); break; } } return result; } double factor_value() //求一个因子的值 何为因子:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。 { double result=0; char c=getchar(); if (c=='(') { result=expression_value(); //'('里面还有表达式 c=getchar(); // 把')'拿走 } else { while (isdigit(c)) { result=10*result+c-'0'; //把字符转换为数字 c=getchar(); } ungetc(c,stdin); } return result; }
描述:
计算一个带括号的整数表达式(结果保留三位小数)
样例输入
(75+10/4)*(50*(60+10))
(6*(6+6/(6*2)))
样例输出
271250.000
39.000
0.0分
0 人评分
点我有惊喜!你懂得!浏览:1007 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:539 |
三角形 (C++代码)递推浏览:825 |
Hello, world! (C语言代码)浏览:766 |
交换Easy (C语言代码)浏览:805 |
淘淘的名单 (C语言代码)浏览:1309 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:765 |
数列有序 (C语言代码)浏览:974 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:710 |