| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖
标题:反向相加问题
取消只看楼主 加入收藏
大宝爱小彭
Rank: 1
等 级:等待验证会员
帖 子:4
专家分:0
注 册:2010-10-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
反向相加问题
长整数加运算的实现要求:通过键盘输入超长(可能超出计算机能够直接处理的范围)的两个整数,计算后输出其加运算的结果。用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 编辑 ]
搜索更多相关主题的帖子: 计算机 程序员 正整数 C语言 元素 
2011-03-07 22:20
快速回复:反向相加问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024440 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved