如何使用 Casio fx-991CNX 进行“编程”
Table of contents
0x0000 前言
- 本文假设您已经能够熟练使用 Casio 的基本计算功能,并且了解
STO
按键的应用。- 请确保计算器处于
线性输入/线性输出
模式,以获得最好的编程体验。
众所周知,fx-991 CN X 是竞赛生使用最广的计算器,因为其没有编程功能使得各大考试允许其被带入考场。但是,有没有可能通过计算器相关功能实现伪编程呢?
答案是肯定的。下面是理论环节。
0x0100 理论
Casio 的 :
功能键(ALPHA
+定积分键
)使得我们可以一次性执行多个计算语句。
0x0101 赋值
变量是编程的核心。在编程中,我们常常使用以下语句给变量赋值:
// int x; int y = 0;
x = 80;
y = y + 1;
在计算器中,我们也能做到。首先,依次按下SHIFT``9(复位)``2(存储器)``=(是)``AC(返回)
来将所有变量(ABCDEFMxy
)的值设为 0。比如,我们要实现上面的代码,就可以在计算器中输入
// 注意,下面的等号是通过按下`ALPHA``CALC`输入的,并非位于减号下面的等号
// 注意,你并不能在计算器中输入注释
x=80 :
y=y+1
然后按下CALC
,接着点击=(减号下面的那个)
直到屏幕上方| |
的记号消失。此时按下SHIFT``STO
检查变量值,发现程序按预期执行
0x0102 有条件循环
不难发现,在刚才的例子中,如果一直按等号键,那么程序将不停歇地执行下去,即我们实现了循环。
可无条件循环太鸡肋了,有没有办法实现有条件循环呢?
答案也是肯定的。利用计算器在正常情况下不能开负数平方根的方法,我们可以在变量大于某个值时抛出数学错误终止循环。
例如,需要实现下面的 C++ 代码:
int x = 1;
int M = 1;
while (x < 10)
{
M *= x;
x++;
}
就可以在计算器中这样书写:
// 写代码前记得把x和M都设为1
√(9-x):
M=Mx:
x=x+1
按下CALC
后狂按等号直到出现数学错误。此时点击←
,再查看变量数值,发现M为362880,正好是9的阶乘,符合预期。
0x0103 三元运算符
受限于计算器,我们无法实现if
条件执行,但是我们退而求其次,实现三元运算符bool ? xx : yy
。
利用计算器本身只保留 15 位有效数字的特性,下面的代码会使得 x 为正数时返回1,x 为其他情况时返回0:
x÷Abs(x+1×10⁻⁹⁹)
这样,我们就得到了条件赋值的方法,当x为正数时A为T,否则为F
A=F+(T-F)x÷Abs(x+1*10⁻⁹⁹)
例题:求 2⁶⁴ 的最后 5 位数 解答:
先鸽一下