标签:随机数 统计 如何 随机 丢失 一个 题目 直接 lis
操作数之间的相对次序不变;
运算符的相对次序不同;
中缀式丢失了括弧信息,致使运算次序不确定;
前缀式的运算规则为:连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式;
后缀式的运算规则为:运算符在式中出现的顺序恰为表达式的运算顺序;每个运算符和在它之前出现且紧靠它的两个操作数构成一个最小表达式。
后缀表示法是波兰逻辑学家J.Lukasiewicz于1929年提出的,又叫做逆波兰表达式。
dc
可以用来对逆波兰式表达式进行求值,dc的打印类命令:p:打印栈顶元素并换行
n: 打印栈顶元素并将其弹出栈,完毕后不换行
P: putchar ( int(栈顶元素) % 256) 并弹栈顶,不换行
f: 从栈顶至栈底打印栈中所有值,每个一行
dc
的运算符:+: 依次弹出w1与w2,将w2+w1压栈。精度为结果值精度
-: 依次弹出w1与w2,将w2-w1压栈
: 依次弹出w1与w2,将w2w1压栈。精度为结果值精度与precision中较大值
/ : 依次弹出w1与w2,将w2/w1压栈。精度为precision
% : 依次弹出w1与w2,将w2-w2/w1*w1压栈
~ : 依次弹出w1与w2,依次将w2/w1与w2%w1压栈
^ : 依次弹出w1与w2,将w2^((int)w1)压栈。精度为w2精度与precision中较大值
| : 依次弹出w1 w2与w3,将 w3 ^ ((int)w2) (mod w1) 压栈。w1 w3 需为整数
v : 弹出w1,将sqrt(v)压栈。精度为precision
dc
支持栈操作:c : 清空栈
d : 将栈顶元素复制并压栈
r : 交换栈顶两元素 XXX
设置一个操作数栈,开始栈为空;
从左到右扫描后缀表达式,遇操作数,进栈;
若遇运算符,则从栈中退出两个元素,先退出的放到运算符的右边,后退出的放到运算符左边,运算后的结果再进栈,直到后缀表达式扫描完毕。
此时,栈中仅有一个元素,即为运算的结果。
设立一个栈,存放运算符,首先栈为空;
从左到右扫描中缀式,若遇到操作数,直接输出,并输出一个空格作为两个操作数的分隔符;
若遇到运算符,则与栈顶比较,比栈顶级别高则进栈,否则退出栈顶元素并输出,然后输出一个空格作分隔符;
若遇到左括号,进栈;若遇到右括号,则一直退栈输出,直到退到左括号止。
当栈变成空时,输出的结果即为后缀表达式。
实现一个命令行程序,要求:
扩展需求,文件:
1.明确设计目的--自动生成小学四则运算题目(加、减、乘、除)
2.将问题逐一解决,eg:如何生成随机数
3.完善条件--支持整数、多运算符、真分数、统计正确率
4.编译运行并测试
Random rand =new Random( );
生成随机数
标签:随机数 统计 如何 随机 丢失 一个 题目 直接 lis
原文地址:https://www.cnblogs.com/IconicV/p/8850304.html