反向相加问题
长整数加运算的实现要求:通过键盘输入超长(可能超出计算机能够直接处理的范围)的两个整数,计算后输出其加运算的结果。用C语言实现。分析:长整数是指超过语言提供的内部数据类型之表达范围的数。于是长整数只能放在程序员自己定义的数据类型,例如字符数组类型中,每个元素仅仅表示长整数的其中一位。为了简单起见,本题的大数和是指所有的正整数的和。我们知道算术加法是从个位开始逐位相加,如果有进位的话就将进位加到更高位上去。这个过程是可以用编程的方法实现的,因为逐位加是一种规律性的操作。然而,我们要对输入的数据做些准备处理,因为输入的数字串是从高位到低位排列的,因而,两个大数只有高位是对齐的,低位并没有对齐。知道了这个,就可以将两个大数都逆转一下,然后进行反向相加处理,例如,对123+56789进行倒排相加: 3210000+ 9876500 2196500做完了逐位加操作之后,将结果字串翻转,变成了“0056912”,然后去掉前导的0就是所要求的结果“56912”了。设计一:分别设计如下的函数实现相应的功能#define MAX 200struct LONGNUMBER{ charnum[MAX]; //存放长整数 intlength; //长整数的位数};//1、输入长整数,逐位放在字符数组中void GetNumber( struct LONGNUMBERLongNumber );//2、输出长整数void PrintNumber( struct LONGNUMBERLongNumber );//3、倒置,即把诸如24534变为43542void Reverse( struct LONGNUMBER LongNumber);//做加法运算void Plus( struct LONGNUMBER num1, structLONGNUMBER num2, struct LONGNUMBER num3); 3210000+ 9876500=2196500向左对齐满十往右进一
[ 本帖最后由 大宝爱小彭 于 2011-3-7 22:54 编辑 ]