如何使用 Casio fx-991CNX 进行“编程”

·

1 min read

0x0000 前言

  1. 本文假设您已经能够熟练使用 Casio 的基本计算功能,并且了解STO按键的应用。
  2. 请确保计算器处于线性输入/线性输出模式,以获得最好的编程体验。

众所周知,fx-991 CN X 是竞赛生使用最广的计算器,因为其没有编程功能使得各大考试允许其被带入考场。但是,有没有可能通过计算器相关功能实现伪编程呢?

答案是肯定的。下面是理论环节。

0x0100 理论

Casio 的 功能键(ALPHA定积分键)使得我们可以一次性执行多个计算语句。

IMG_20220720_115446.jpg

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检查变量值,发现程序按预期执行 IMG_20220720_121841_edit_115145437129824.jpg IMG_20220720_121858_edit_115135426238159.jpg

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的阶乘,符合预期。

IMG_20220720_123118_edit_115959296836992.jpg IMG_20220720_123241_edit_115949217121368.jpg

0x0103 三元运算符

受限于计算器,我们无法实现if条件执行,但是我们退而求其次,实现三元运算符bool ? xx : yy

利用计算器本身只保留 15 位有效数字的特性,下面的代码会使得 x 为正数时返回1,x 为其他情况时返回0:

x÷Abs(x+1×10⁻⁹⁹)

IMG_20220720_124037_edit_116405555069736.jpg

这样,我们就得到了条件赋值的方法,当x为正数时A为T,否则为F

A=F+(TF)x÷Abs(x+1*10⁻⁹⁹)

例题:求 2⁶⁴ 的最后 5 位数 解答:

先鸽一下