问答题 [说明] 给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R=2为例,11÷2=5…1,5÷2=2…1,2÷2=1…0,1÷2=0…1中各式的余数依次为:1,1,0,1,于是与A对应的二进制数为1011。 下面的流程图实现了将十进制数2597转换为八进制数的功能,其中: (1)循环1执行除法运算并将余数依次记录在数组a中(假定数组长度足够长),如a[1], a[2],……,a[k]; (2)循环2则用于将这些余数按逆序输出,即a[k],a[k-1],……,a[1]; (3)图中i,j分别是循环1和循环2中的循环变量; (4)图中q用于记录每次除法所得的商值。 [流程图]
【正确答案】
【答案解析】[问题1](1)q>0 (2)q/R (3)q%R (4)j:i-1,1, -1 [问题2](5)5045 (1)~(3)根据流程图的说明可知:仅当除R所得的商大于零时(即q>0),循环1会被重复执行;并且循环1的循环体中对q进行一次除法运算,因此商等于q/R,余数a[i]=q%R; (4)在开始执行循环2时,i的值是余数的个数加上1,因此,在以j为循环变量逆序输出数组s中有意义的那部分值,应以数组下标i-1为循环初值,以数组下标1为循环终值,以1为增量; (5)由于2597÷8=324…5,324÷8=40…4,40÷8= 5…0,5+8=0…5,因此算法运行结果为5045。