简单计算器(杭电1237)(栈的运用)

简单计算器

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 12594    Accepted Submission(s): 4139

Problem Description

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

Input

测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

Output

对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。

Sample Input

1 + 2
4 + 2 * 5 - 7 / 11
0

Sample Output

3.00
13.36
/*运用栈的性质,技巧性强。
*/
#include<stdio.h>
#include<string.h>
int main()
{
	double a[200],sum,t,b;
	int len;
	char c;
	while(scanf("%lf",&b))
	{
		len=0;
		memset(a,0,sizeof(a));
		a[len]=b;
	    c=getchar();
	    if(b==0&&c=='\n') //当输入0的话程序结束。
		{
		   break;
	    }
	    while(1)
	    {
	    	scanf("%c %lf",&c,&t);
	    	if(c=='*')
	    	    a[len]*=t;
	    	else if(c=='/')
	    	    a[len]/=t;
	    	else if(c=='+')
	    	    a[++len]=t;
	    	else
	    	    a[++len]=-t;
	    	if(getchar()=='\n')  //用来判断最后的元素,循环终止的判断。
			{
			    break;
			}
	    }
	    for(sum=0;len>=0;len--)
	    {
	    	sum+=a[len];
	    }
	    printf("%.2lf\n",sum);
	}
	return 0;
}
时间: 2024-11-09 03:39:59

简单计算器(杭电1237)(栈的运用)的相关文章

HDU 1237 简单计算器(后缀式+栈)

简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16351    Accepted Submission(s): 5604 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,

C - 简单计算器 (HDU - 1237)

- 题目大意 给出一个四则运算计算式,然后来求值. - 解题思路 根据符号来利用栈将数变换成对应的形式,比如如果是'+'的话,便将后面的那个数字压入栈中,'-'号的话,将后面的数字取反压入栈中,而如果遇到乘法或除法,则将栈顶取出与符号后面的数字计算后压入栈中,这样最后在栈中的数字全部相加即是表达式的值了. - 代码 #include<iostream> #include<stack> #include<iomanip> using namespace std; int

[VJ][简单背包]杭电饭卡

饭卡 Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够).所以大家都希望尽量使卡上的余额最少. 某天,食堂中有n种菜出售,每种菜可购买一次.已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少. Input 多组数据.对于每组数据: 第一行为正整数n,表示菜的数量.n<=1000. 第二行包括n个正整数,表示每种菜的价格.价格不

杭电1237--简单计算器 (getchar() + 栈)

简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14590    Accepted Submission(s): 4957 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整

hdu 1237 简单计算器(栈处理)

简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 26553    Accepted Submission(s): 9626 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整

HDU 1237:简单计算器【栈】

简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6429    Accepted Submission(s): 2044 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整

HDU1237 简单计算器 【栈】+【逆波兰式】

版本:1.0 日期:2014.5.17 2014.6.1 版权:© 2014 kince 转载注明出处 在介绍SwitchButton之前,先来看一下系统Button是如何实现的.源码如下: @RemoteView public class Button extends TextView { public Button(Context context) { this(context, null); } public Button(Context context, AttributeSet att

hdoj 1237 简单计算器

简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14512    Accepted Submission(s): 4920 Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词典.当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能:当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒.如果他要的魔咒不在词典中,就输出"what?" Input 首先列出词典中不超过100000条不同的魔咒词条,每条格式