HDOJ 1237题 简单计算器

简介: 简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 15220 Accepted Submission(s): 5195Problem Description 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。

简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15220 Accepted Submission(s): 5195

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

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

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

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

Sample Output
3.00
13.36

听说大部分人是用栈做的,可惜我现在还不太懂,所以就直接一个一个读入数组做了,开始的时候我出了一个小错误,就是那个0 + 0输出应该是0,而我开始写的判断是直接结束了。
ac代码:(很容易理解吧)

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char a;
    double s,a1,b[500];
    int i,j;
    while(scanf("%lf",&a1))
    {
        b[0]=a1;
        if(a1==0)
        {
            a=getchar();
            if(a=='\n')
                break;
        }
        i=1;
        while(1)
        {
            a=getchar();
            if(a=='+')
                {
                    scanf("%lf",&b[i]);
                    b[i]=b[i];
                    i++;
                }
            if(a=='-')
            {
                scanf("%lf",&b[i]);
                b[i]=-b[i];
                i++;
            }
            if(a=='/')
            {
                scanf("%lf",&b[i]);
                b[i]=b[i-1]/b[i];
                b[i-1]=0;
                i++;
            }
            if(a=='*')
            {
                scanf("%lf",&b[i]);
                b[i]=b[i-1]*b[i];
                b[i-1]=0;
                i++;
            }
            if(a=='\n')
                break;
        }
        s=0;
        for(j=0;j<i;j++)
        {
            s=s+b[j];
        }
        printf("%0.2lf\n",s);
    }
    return 0;
}
目录
相关文章
hdoj 1907
这是一道博弈的题,准确说是尼姆博弈,只要判断各项的异或值即可。
37 0
|
Java 数据安全/隐私保护
HDOJ 2100 Lovekey
HDOJ 2100 Lovekey
100 0
HDOJ 2057 A + B Again
HDOJ 2057 A + B Again
107 0
|
安全
HDOJ 2022 海选女主角
HDOJ 2022 海选女主角
153 0
|
人工智能 Java BI
HDOJ 1303 Doubles(简单题)
Problem Description As part of an arithmetic competency program, your students will be given randomly generated lists of from 2 to 15 uniq...
986 0
HDOJ 2802 F(N)
Problem Description Giving the N, can you tell me the answer of F(N)? Input Each test case contains a single integer N(1
720 0
HDOJ 2056 Rectangles
Problem Description Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have to calculate the area of the intersected part of two rectangles.
1005 0
HDOJ 2075 A|B?
Problem Description 正整数A是否能被正整数B整除,不知道为什么xhd会研究这个问题,来帮帮他吧。 Input 输入数据的第一行是一个数据T,表示有T组数据。
949 0