Dime A(10) &&定义一个数组,具体为什么要定义,开始时可以不加考虑
INPUT “一个十进制整数=” TO X &&输入语句,等待用户从键盘上输一个数给X变量,这里可以假设输入的是4(这个数小点好跟踪)
I=1 &&变量I被赋值为1,为什么要赋值为1,开始时也别管它,后面自然会知道的(I=1)
YS=MOD(X,2) &&对X取2的余数,结果赋值给变量YS,因为前面假设是4,所以这里YS变量值为(YS=0)
ZS=INT(X/2) &&计算出X除以2的商,结果赋值给变量ZS,因为前面假设是4,所以这里ZS变量值为2 (ZS=2)
DO WHILE ZS!=0 &&判断循环条件是否满足,因为ZS最新的值是2,所以条件为真,进入循环体
A(I)=YS &&此时I为1,将最新的YS值赋值给A(1),也就是余数了(A(1)=0)
YS=MOD(ZS,2) &&ZS为最新商的值,对其再次取2的余数,结果赋值给YS(YS=0)
ZS=INT(ZS/2) &&ZS为最新商的值,对其再次计算新的商值(ZS=1)
I=I+1 &&数组下标增加1(I=2)
ENDD &&跳转到循环开头再次判断ZS!=0是否为真,因为此时最新的ZS是1,所以条件为真,进入循环体
A(I)=YS &&此时I为2,将最新的YS值赋值给A(2),也就是余数了(A(2)=0)
YS=MOD(ZS,2) &&ZS为最新商的值,对其再次取2的余数,结果赋值给YS(YS=1)
ZS=INT(ZS/2) &&ZS为最新商的值,对其再次计算新的商值(ZS=0)
I=I+1 &&数组下标增加1(I=3)
ENDD &&跳转到循环开头再次判断ZS!=0是否为真,因为此时最新的ZS是0,所以条件为假,不再进入循环体,执行ENDDO后面的语句
A(I)=YS &&此时I为3,将最新的YS值赋值给A(3),也就是余数了(A(3)=1)
***此时可以考虑一下数组元素A(1)、A(2)、A(3)分别放的是每次得到的余数,是不是有感觉了呢?******
继续!
J=I &&此时I为3,赋值给J(J=3)
DO WHILE J>=1 &&判断循环条件是否满足,因为J的值是3,所以条件为真,进入循环体
?? STR(A(J),1) &&以字符形式输出A(J)的内容,也就是A(3)的内容(屏幕上显示1)
J=J-1 &&数组下标减1(J=2)
ENDD &&跳转到循环开头再次判断J>=1是否为真,因为此时最新的J是2,所以条件为真,进入循环体
?? STR(A(J),1) &&以字符形式输出A(J)的内容,也就是A(2)的内容(屏幕上显示0)
J=J-1 &&数组下标减1(J=1)
ENDD &&跳转到循环开头再次判断J>=1是否为真,因为此时最新的J是1,所以条件为真,进入循环体
?? STR(A(J),1) &&以字符形式输出A(J)的内容,也就是A(1)的内容(屏幕上显示0)
J=J-1 &&数组下标减1(J=0)
ENDD &&跳转到循环开头再次判断J>=1是否为真,因为此时最新的J是0,所以条件为假,不再进入循环体,执行ENDDO后面的语句
结束
***此时可以考虑一下数组元素A(1)、A(2)、A(3)是从后往前进行屏幕输出的,正好满足我们对余数的从下往上书写的规律******