阅读以下说明和程序流程图,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:m=a[k]×10k-2+a[k一1]×10k-3+…+a[3]×10+a[2]其

admin2014-10-11  31

问题 阅读以下说明和程序流程图,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:m=a[k]×10k-2+a[k一1]×10k-3+…+a[3]×10+a[2]其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数、1表示负数。注:数组下标从0开始。流程图(图3一1)用于计算长整数的加(减)法。运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针pA和pB,分别指向绝对值较大者和较小者。而对绝对值相加情况,让pA指向LA,pB指向LB,不区分绝对值大小。pA±pB可用通式pA+tlag*pB来计算,flag为+1时即对应pA+pB,flag为一1时即对应pA—pB。需特别注意的是,对丁相减,不够减时要进行借位,而当最高位借位后正好为0时,结果的总位数应减1;对于加法,有最高进位时,结果的总位数应加1。流程图中涉及的函数说明如下:
(1)cmp(int*LA,int*LB)函数,用于比较长整数LA与LB的绝对值大小,若LA绝对值大于LB绝对值则返回正值,LA绝对值小于LB绝对值返回负值,相等则返回0。
(2)max(int A,int B)函数,用于返回整数A与B中较大数。另外,对流程图中的写法进行约定:(1)“=”表示赋值,  如“flag:=LA[0]+LB[0]”表示将“LA[0]+LB[0]”的结果赋给flag,相当于C中的赋值语句:  “flag=LA[0]+LB[0];”;  (2)“:”表示比较运算,如“flag:1”表示flag与l比较。

选项

答案(1)flag:=1 (2)carry:=0 (3)carry:0 (4)LC[i+1]:0 (5)LC[i+2]:0

解析 对这种题目,首先阅读说明,从功能上了解程序的结构,把握整体框架,冉仔细对照阅读流程图,且勿先阅读流程图。仔细阅读完说明,就知道整体框架了:先决定符号,冉进行绝对值的加减,其中加减是用,flag来标识的。对于加法,要注意进位,特别是最高进位;对于减法,要注意借位,亦即负进位,在此不用考虑不够减情况,但仍要特别注意最高借位,当最高位正好为O时,要把高位所有的0去掉。空(1)很容易就得到答案,应为flag:=1。空(2)以下就开始绝对值的加减了。此时PA、PB已正确赋值。在计算过程中,进位是需要特别注意的,从下面的流程可知,carry表示的就是进位,需进行初始化,故空(2)应填carry;=0。空(3)以下是i>=N的情况,即对于计算结束,进行后期处理,此时就要考虑最高进位的问题。可得空(3)应填carry:0,即判断最高进位是否为0(对减法为负进位)。空(4)是删除高位的,故应填LC[i+1]:0。空(5)处是具体进行加减法运算的。空(5)处的条件主要是针对减法的,当不够减时需要借位,故空(5)应填LC[i+2]:0。
转载请注明原文地址:https://jikaoti.com/ti/tUi7FFFM
0

相关试题推荐
随机试题
最新回复(0)