问答题[说明] 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为: m=a[k]×10k-2+a[k-1]×10k-3+…+a[3]×10+a[2] 其中a[1]保存该长整数的位数,a[0]保存该长整数的符号:0表示正数、1表示负数。 运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注意,不考虑溢出情况,即数组足够大。 [函数] int cmp(int *LA, int *LB); /*比较长整数LA与LB的绝对值大小*/ /*若LA绝对值较大返回正值,LA较小返回负值,相等则返回0*/ int ADD (int *LA, int *LB, int *LC) /*计算长整数LA与LB的和,结果存储于LC中*/ /*注意:正数与负数的和相当于正数与负数绝对值的差*/ /*数据有误返回0,正常返回1*/
if(LA == NULL || LB == NULL || LC == NULL)return 0; int *pA, *pB, i, N, carry, flag; flag = LA[0] + LB[0]; switch(flag) /*根据参与运算的两个数的符号进行不同的操作*/ case 0: case 2: Lc[0] = LA[0];/*LA与LB同号,结果符号与LA(LB)相同*/ pA = LA; pB = LB; (1) ; break; case 1: /*LA与LB异号*/ /*比较两者的绝对值大小,结果符号与较大者相同*/ flag = (2) ; if(flag > 0) /*LA较大*/ LC[0] = LA[0]; pA = LA; pB = LB;