Openjudge-NOI题库-简单算术表达式求值
- 题目描述 Description
两位正整数的简单算术运算(只考虑整数运算),算术运算为:
+,加法运算;
-,减法运算;
*,乘法运算;
/,整除运算;
%,取余运算。
算术表达式的格式为(运算符前后可能有空格):
运算数 运算符 运算数
- 请输出相应的结果。
- 输入输出格式 Input/output
- 输入:
- 一行算术表达式。
- 输出:
- 整型算数运算的结果(结果值不一定为2位数,可能多于2位或少于2位)。
- 输入输出样例 Sample input/output
- 输入样例:
- 32+64
- 输出样例:
- 96
- 思路:可以先用一个字符串存入这个表达式,分别从前往后,从后往前找数字,从前往后遍历这个数组,在后面一个字符不为空格的情况下,变为数字,从后往前遍历这个数组,在前面一个字符不为空格情况下,变为数字,然后再扫描一遍这个数组看看是什么运算符号,最后判断运算符号输出结果即可。
- 代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
int n,i;
char a[];
int f=,l=;
gets(a);
for(i=;i<strlen(a);i++)//首个两位数
{
if(a[i]>=''&&a[i]<='')//如果是数字
{
if(a[i+]>=''&&a[i+]<='')//如果后面那个也是数字
{
f=(f+a[i]-)*;//变为数字往前进一位
}
else//否则是空格什么的直接存为数字
{
f=f+a[i]-;
break;
}
}
}
for(i=strlen(a);i>;i--)//第二个两位数
{
if(a[i]>=''&&a[i]<='')//如果是数字
{
if(a[i-]>=''&&a[i-]<='')//如果前面那个也是数字
{
l=l+a[i]-;
}
else//否则是空格什么的直接存为数字
{
l=l+(a[i]-)*;//变为数字往前进一位
break;
} /* 35+14 */
}
}
for(i=;i<strlen(a);i++)
{
if(a[i]=='+') printf("%d\n",f+l);
else if(a[i]=='-') printf("%d\n",f-l);
else if(a[i]=='*') printf("%d\n",f*l);
else if(a[i]=='/') printf("%d\n",f/l);
else if(a[i]=='%') printf("%d\n",f%l);
}
return ;
}
Openjudge-NOI题库-简单算术表达式求值的更多相关文章
- OpenJudge计算概论-简单算术表达式求值
/*===================================== 简单算术表达式求值 总时间限制: 1000ms 内存限制: 65536kB 描述 2位正整数的简单算术运算(只考虑整数运 ...
- Openjudge-计算概论(A)-简单算术表达式求值
描述: 两位正整数的简单算术运算(只考虑整数运算),算术运算为: +,加法运算:-,减法运算:*,乘法运算:/,整除运算:%,取余运算. 算术表达式的格式为(运算符前后可能有空格):运算数 运算符 运 ...
- 【算法】E.W.Dijkstra算术表达式求值
算术表达式求值 我们要学习的一个栈的用例同时也是展示泛型的应用的一个经典例子,就是用来计算算术表达式的值,例如 ( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) ) 如果将4乘以5,把3 ...
- 算法手记(2)Dijkstra双栈算术表达式求值算法
这两天看到的内容是关于栈和队列,在栈的模块发现了Dijkstra双栈算术表达式求值算法,可以用来实现计算器类型的app. 编程语言系统一般都内置了对算术表达式的处理,但是他们是如何在内部实现的呢?为了 ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- page80-栈用例-算术表达式求值
表达式由括号, 运算符和操作数(数字)组成.我们根据以下4中情况从左到右逐个将这些实体送入栈处理. (1)将操作数压入操作数栈: (2)将运算符压入运算符栈: (3)忽略左括号: (4)在遇到右括号时 ...
- Dijkstra的双栈算术表达式求值算法
这次来复习一下Dijkstra的双栈算术表达式求值算法,其实这就是一个计算器的实现,但是这里用到了不一样的算法,同时复习了栈. 主体思想就是将每次输入的字符和数字分别存储在两个栈中.每遇到一个单次结束 ...
- 栈的一个实例——Dijkstra的双栈算术表达式求值法
Dijkstra的双栈算术表达式求值法,即是计算算术表达式的值,如表达式(1 + ( (2+3) * (4*5) ) ). 该方法是 使用两个栈分别存储算术表达式的运算符与操作数 忽略左括号 遇到右括 ...
- [Java]算术表达式求值之三(中序表达式转二叉树方案 支持小数)
Entry类 这个类对表达式的合法性进行了粗筛: package com.hy; import java.io.BufferedReader; import java.io.IOException; ...
随机推荐
- HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象
HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象 通过前面对“HttpController的激活”的介绍我们已经知道了ASP.NET Web API通过Ht ...
- 一键搭键php网站环境的系统
QzzmServer v2.0正式版发布 首先,感谢网友的热情的测评及反馈,现QzzmServer 2.0正式版已发布.有些朋友反馈制作一个服务器专用版本,在下已将此列入计划中,敬请大家耐心等候. Q ...
- 基于支持向量机的车牌识别-- opencv2.4.7+vs2012环境搭建
环境说明: 环境: OS:win7 sp1 opencv:2.4.7 vs2012 搭建过程: PS:机器上原本已安装vs2012 1.opencv 1.1 下载,直接双击安装即可. 此处我的安装位置 ...
- Sqlite in Android
在Android上保存本地数据有三种方式,SharedPreferences.Files和Sqlite.SharedPreferences主要是用来保存键值对形式的程序配置信息,与ini.proper ...
- fastboot,bootloader,recovery
Fastboot模式,在这个模式下,我们可以为手机进行解锁.可以在该模式下连接电脑进行软件或者指令解锁(s-off),这个模式也称“下载模式” Fastboot fastboot是一种比recover ...
- php提供service总结---wsdl篇
越来越多的架构偏向于面向接口和面向服务的设计了,当我们把抽象的落地变为实际的时候,我们感觉到了代码的厚度.而当我们把具体的业务再进一步抽象,我们就能发现藏在细节深处的回馈. php可以提供servic ...
- php最新学习-----文件的操作
一.文件:文件和目录 (1)判断文件的类型用:filetype() filetype("文件路径+文件名") //判断文件的类型 例如:我这里查找的的上一级目录中的json文件,输 ...
- ORACLE查询语句
--建表FAMILYINF CREATE TABLE FAMILYINFO( FNO NUMBER CONSTRAINT FC001 PRIMARY KEY,--把字段fno约束为主键 ...
- 设计模式 -- 桥接模式(Bridge Pattern)
桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合, ...
- 【CSS学习笔记】背景图片
直接看代码: background: blue; /*页面背景为蓝色,很简单的代码*/background-image:url(small.jpg); /*页面背景是名字叫small.jpg的图片*/ ...