zoukankan      html  css  js  c++  java
  • 九度oj题目1019:简单计算器

    题目1019:简单计算器

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6346

    解决:2334

    题目描述:
        读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
    输入:
        测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
    输出:
        对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
    样例输入:
    1 + 2
    4 + 2 * 5 - 7 / 11
    0
    样例输出:
    3.00
    13.36
    来源:
    2006年浙江大学计算机及软件工程研究生机试真题
     1 #include <stdio.h>
     2 #include <cstring>
     3 #include <queue>
     4 #include <iostream>
     5 using namespace std;
     6 double stack[110];
     7 int main(){
     8     //freopen("D:\INPUT.txt","r",stdin);
     9     int tail;
    10     double num;
    11     while(cin>>num&&num!=0){
    12         //cout<<num<<endl;
    13         tail=0;
    14         memset(stack,0,sizeof(stack));
    15         stack[tail++]=num;
    16         //cout<<stack[tail-1]<<endl;
    17         char c1,cal;
    18         //cout<<"1"<<endl;
    19         while(scanf("%c",&c1)){
    20             //cout<<c1<<endl;
    21             if(c1=='
    '){
    22                 //cout<<1<<endl;
    23                 break;
    24             }
    25             //cout<<2<<endl;
    26             scanf("%c %lf",&cal,&num);
    27             //cout<<num<<endl;
    28             //cout<<cal<<endl;
    29             switch(cal){
    30             case '+':{
    31                 stack[tail++]=num;
    32                 //cout<<stack[tail-1]<<endl;
    33                 break;
    34             }
    35             case '-':{
    36                 stack[tail++]=-num;
    37                 //cout<<stack[tail-1]<<endl;
    38                 break;
    39             }
    40             case '*':{
    41                 tail--;
    42                 stack[tail]=stack[tail]*num;
    43                 tail++;
    44                 //cout<<stack[tail]<<endl;
    45                 break;
    46             }
    47             case '/':{
    48                 tail--;
    49                 stack[tail]=stack[tail]/num;
    50                 tail++;
    51                 //cout<<stack[tail]<<endl;
    52                 break;
    53             }
    54         }
    55         }
    56         int i;
    57         double sum=0;
    58         for(i=0;i<tail;i++){
    59             sum+=stack[i];
    60             //cout<<stack[i]<<endl;
    61         }
    62         printf("%.2lf
    ",sum);
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    第二次作业
    动手动脑
    第五周总结
    第四周总结
    二维数组
    返回一个整数数组中最大子数组的和---第一次完善
    第三周总结
    第二周进度
    自我介绍
    返回一个整数数组中最大子数组的和
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4632849.html
Copyright © 2011-2022 走看看