算法训练 前缀表达式(蓝桥杯)

算法训练 前缀表达式

时间限制:1.0s   内存限制:512.0MB

问题描述

  编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。

  输入格式:输入只有一行,即一个前缀表达式字符串。

  输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。

  输入输出样例

样例输入

+ 5 2

样例输出

7

ps:http://lx.lanqiao.org/problem.page?gpid=T225

谁能告诉我,错哪了。。。。。。无爱了!

#include<stdio.h>
#include<stack>
#include<string.h>
using namespace std;

stack<int> s;
void fun(char op)
{
 //   printf("%c\n",op);
    int x,y;
    if(s.empty()) return ;
    x=s.top();
    s.pop();
 //   printf("%d\n",x);
    if(s.empty()) return ;
    y=s.top();
    s.pop();
 //   printf("x=%d,y=%d\n",x,y);
    switch(op)
    {
        case‘+‘:x+=y; break;
        case‘-‘:x-=y; break;
        case‘*‘:x*=y; break;
        case‘/‘:x/=y; break;
    }
    s.push(x);
}
char ch[10005];
int main()
{
    int len,x,y;

    gets(ch);
//    printf("%s\n",ch);
    len=strlen(ch);
//    printf("%d\n",len);
    for(int i=len-1;i>=0;i--)
    {
        if(ch[i]==‘ ‘) continue;
 //       printf("%c",ch[i]);
        if(ch[i]>=‘0‘&&ch[i]<=‘9‘)
        {
            int xx=ch[i]-‘0‘;
            s.push(xx);
        }
        else if(ch[i]==‘+‘) fun(ch[i]);
        else if(ch[i]==‘-‘) fun(ch[i]);
        else if(ch[i]==‘*‘) fun(ch[i]);
        else if(ch[i]==‘/‘) fun(ch[i]);
    }
    if(!s.empty())
    printf("%d\n",s.top());
    s.pop();
    return 0;
}

然后网上搜了一下,我更加无语了。。。。。。。。。。

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    char c;
    int n,m;
    scanf("%c",&c);
    scanf("%d%d",&n,&m);
    if(c==‘+‘)
        printf("%d\n",n+m);
    if(c==‘-‘)
        printf("%d\n",n-m);
    if(c==‘*‘)
        printf("%d\n",n*m);
    if(c==‘/‘)
        printf("%d\n",n/m);
    return 0;
}

这代码居然能过。。。。。

大神们快来拯救我。帮我看下代码;

时间: 2024-10-05 17:50:53

算法训练 前缀表达式(蓝桥杯)的相关文章

算法训练 前缀表达式 (蓝桥杯)

算法训练 前缀表达式 时间限制:1.0s   内存限制:512.0MB 问题描述 编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值.输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法).“-”(减法).“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开.要求:对于加.减.乘.除这四种运算,分别设计相应的函数来实现. 输入格式:输入只有一行,即一个前缀表达式字符串. 输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,

蓝桥杯-算法训练 前缀表达式

算法训练 前缀表达式 时间限制:1.0s   内存限制:512.0MB 问题描述 编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值.输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法).“-”(减法).“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开.要求:对于加.减.乘.除这四种运算,分别设计相应的函数来实现. 输入格式:输入只有一行,即一个前缀表达式字符串. 输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,

蓝桥杯 算法训练 ALGO-156 表达式计算

算法训练 表达式计算 时间限制:1.0s   内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行. 题目解析: 运算优先级: 括号 → 乘除 → 加减 例如 1-2+3*(4-5) (1)计算(4-5),表达式变为  1-2+3*-1 (2

算法笔记_108:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科A组)试题解答

 目录 1 世纪末的星期 2 振兴中华 3 梅森素数 4 颠倒的价牌 5 三部排序 6 逆波兰表达式 7 错误票据 8 带分数 9 剪格子 10 大臣的旅费 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 世纪末的星期 标题: 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,"谣言制造商&qu

算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)

目录 1 海盗分金币 2 六角幻方 3 格子放鸡蛋 4 排列序数 5 幂一矩阵 6 供水设施   1 海盗分金币 有5个海盗,相约进行一次帆船比赛. 比赛中天气发生突变,他们被冲散了. 恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人. 第一个人在沙滩上发现了一堆金币.他把金币分成5等份.发现刚好少一个金币.他就从自己口袋拿出一个金币补充进去,然后把属于自己的那份拿走. 第二个到达的人也看到了金币,他也和第一个人一样,把所有金币5等分,发现刚好缺少一个

算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

目录 1 好好学习 2 埃及分数 3 金蝉素数 4 横向打印二叉树 5 危险系数 6 公式求值   1 好好学习 汤姆跟爷爷来中国旅游.一天,他帮助中国的小朋友贴标语.他负责贴的标语是分别写在四块红纸上的四个大字:"好.好.学.习".但是汤姆不认识汉字,他就想胡乱地贴成一行. 请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少? 答案是一个分数,请表示为两个整数比值的形式.例如:1/3 或 2/15 等. 如果能够约分,请输出约分后的结果. 注意:不要书写多余的空格. 请严格按照格式

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

 目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数

算法笔记_202:第三届蓝桥杯软件类决赛真题(Java高职)

目录 1 填算式 2 提取子串 3 机器人行走 4 地址格式转换 5 排日程   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 填算式 [结果填空] (满分11分) 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = 468 173 + 295 = 468 183 + 492 = 675 以上都是正确的填写法! 注意: 111 + 222 = 333 是错误

java算法 第七届 蓝桥杯B组(题+答案) 8.四平方和

8.四平方和  (程序设计) 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和.如果把0包括进去,就正好可以表示为4个数的平方和. 比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思) 对于一个给定的正整数,可能存在多种平方和的表示法.要求你对4个数排序:0 <= a <= b <= c <= d并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法