2016HUAS暑假集训训练题 F - 简单计算器

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()
{
	int t,l ;double sum;double num[200];
    while(scanf("%d",&t))
	{
		l=0;
		sum = t*1.0;
		char c;if(t==0&&(c = getchar())==‘\n‘)return 0;
		while((c = getchar())!=‘\n‘)
		{

			if(c==‘*‘) { scanf("%d",&t);sum*=t;}   //算出含*的值
			 if(c==‘/‘) { scanf("%d",&t);sum/=t*1.0;} // 算出含/的值
			 if(c==‘+‘)
			{
				num[l++] =sum; scanf("%d",&t);sum = t*1.0;  //把sum存入数组
			}
			if(c == ‘-‘)
			{
				num[l++] = sum; scanf("%d",&t);sum = -t*1.0;//把sum存入数组
			}
		}
		 num[l++] = sum;
		double sun = 0;
		for(int i = 0; i < l;i++)  对sum求和  算出表达式的值
			sun += num[i];
	printf("%.2lf\n",sun);
	}
}

  

时间: 2024-10-05 22:11:35

2016HUAS暑假集训训练题 F - 简单计算器的相关文章

2016HUAS暑假集训训练题 G - Oil Deposits

Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It

2016HUAS暑假集训训练题 E - Rails

There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned

2016HUAS暑假集训训练2 A - Is It A Tree?

本题本是一道并查集的题,但出的数据比较小,因此用树的特点即一个点入度为0其他的全为1且边的条数等于顶点数减一即可下面是我的AC代码: #include<iostream> #include <cstring> using namespace std; int main() { int n = 0, x, y, fff, i, j,sss[15], t = 0, k = 0, s ,ss, f, ff = 0, a[10005], b[10005], r[10005]; while

2016HUAS暑假集训训练2 D - 敌兵布阵

Description Lily 特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易.她把她的花依次排成一行,每盆花都有一个美观值.如果Lily把某盆花照料的好的话,这盆花的美观值就会上升,如果照料的不好的话,这盆花的美观值就会下降.有时,Lily想知道某段连续的花的美观值之和是多少,但是,Lily的算术不是很好,你能快速地告诉她结果吗? Input 第一行一个整数T,表示有T组测试数据. 每组测试数据的第一行为一个正整数N(N<=50000),表示Lily有N盆花.接下来有N个正

F - 简单计算器

F - 简单计算器 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值.    Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔.没有非法表达式.当一行中只有0时输入结束,相应的结果不要输出.    Output 对每个测试用例输出

2016暑假集训训练2 C题 食物链

带权并查集傻逼题 用拆点方法草过. 拆点代码: # include <stdio.h> # include <string.h> int set[150005], n, k, d; int find(int x) { int s, temp; for (s=x; set[s]>=0; s=set[s]) ; while (s != x) { temp = set[x]; set[x] = s; x = temp; } return s; } void union_set(in

2016暑假集训训练2 H题 Frosh Week

求逆序数的傻逼题. 用归并排序或者树状数组或者线段树 归并排序代码: # include<stdio.h> # define MAXN 500100 int a[MAXN],b[MAXN]; long long ans; void merge(int l, int r) { int k, p, q; if(l == r) return; int mid= (l+r)>>1; merge(l,mid); merge(mid+1,r); p = l; q = mid+1; k = l;

2016暑假集训训练2 I题 Doing Homework again

傻逼贪心题. 先按照扣分从大到小排序,分数相同则按照截止日期从小到大排序.. 然后按顺序,从截止日期开始往前找没有占用掉的时间. 如果找不到了,则加到罚分里面. # include <stdio.h> # include <stdlib.h> # include <string.h> int h[1005][2], n, visit[1005]; int comp(const void * a, const void * b) { return *(((int*)b)+

2016暑假集训训练2 N题 Play on Words

水题不解释.... # include <stdio.h> # include <string.h> int dee[26], set[26], node[26], n; char s[1002]; int find(int x) { int s, temp; for (s=x; set[s]>=0; s=set[s]) ; while (s!=x) { temp = set[x]; set[x] = s; x = temp; } return s; } void union