阅读以下说明和流程图,回答问题1~2,将解答填入答题纸对应的解答栏内。 [说明] 给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R

admin2009-02-15  21

问题 阅读以下说明和流程图,回答问题1~2,将解答填入答题纸对应的解答栏内。
[说明]
   给定一个十进制整数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)~(4)处补充完整,其中(1)~(3)处要求使用C语言格式书写:(1)处为逻辑表达式,(2)、(3)两处为算术表达式;(4)则须按照“循环变量名:循环初值,循环终值,增量”格式描述。
[问题2]该算法运行的结果(5)。

选项

答案[问题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=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。
转载请注明原文地址:https://kaotiyun.com/show/CbjZ777K
0

最新回复(0)