问题描述:在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下:
9876543210 + 1234567890 =?
让字符串 num1 = "9876543210",字符串 num2 = "1234567890",结果保存在字符串result中。要求编程实现上述高精度的十进制加法。

#include<stdio.h>
#include<string.h>
int NumAdd(const char *first,const char *second,char *result, int resultlen)
{int numlen[2];numlen[0] = strlen(first);numlen[1] = strlen(second);int maxlen;maxlen=  numlen[0]> numlen[1] ?  numlen[0] : numlen[1] ;if (resultlen< maxlen + 1)      return -1;int n;int byteValue[2];int curByteResult; int addByteResult; curByteResult=addByteResult=0;//从左到右进行循环for(n = 0; n <maxlen; n++){--numlen[0]; --numlen[1];if (numlen[0] >= 0)byteValue[0] = first[n] - '0' ;else byteValue[0] = 0 ;   if (numlen[1] >= 0)byteValue[1] = second[n]- '0' ;else byteValue[1] = 0 ;   curByteResult = byteValue[0] +  byteValue[1];if (curByteResult>=10){curByteResult -= 10;addByteResult = 1;if (n==0){result[0] = '1';++result;}else{++result[n-1]; //处理进位}result[n] = '0'+curByteResult;    }else{result[n] = '0'+curByteResult ;addByteResult = 0;}}result[n] =0;return 1;
}int main( )
{char szstr1[]="9876543210";char szstr2[]="1234567890";char result[100];NumAdd(szstr1,szstr2,result,100);printf("result is %s ",result);return 0;
}

转载于:https://www.cnblogs.com/foxhengxing/archive/2010/08/24/1807591.html

华为面试题之大整数相加相关推荐

  1. 漫画:如何实现大整数相加

    转载自  漫画:如何实现大整数相加 在程序中列出的 "竖式" 究竟是什么样子呢?我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤: 第 ...

  2. 【Java】算法积累1——大整数相加

    算法刚刚入门,每次记录下自己所学的知识总结以及理解,希望能够帮助大家,如有内容有错误或可改进的地方,欢迎一起探讨,一起进步,在此也要感谢WYSCODER学长给我的学习建议 目录 方法一: 思路: 代码 ...

  3. 怎样实现大整数相加?

    问题: 如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的和呢? 分析: 回顾起小学数学,当我们需要计算两个较大数目的加减乘除,我们是用列竖式的方式来计算的. ...

  4. -9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)

    题目来源于leetcode第二题两数相加. 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相 ...

  5. 链表系列之单链表——使用单链表实现大整数相加

    原文:http://blog.csdn.net/iloveyoujelly/article/details/38321735 大数相加在我之前的一篇博客里有一个使用数组实现的方案,使用单链表实现更灵活 ...

  6. 【算法图解|1】js 实现一个函数,完成超过范围的两个大整数相加功能

    这个问题中的两个数字,都是超出范围的,所以就不能简单的把两个数字,转为Number类型,进行相加. 需要取两个数字的每一位,进行相加,大于10,就进1,把结果保存在一个字符串中. 主要思路是通过将数字 ...

  7. 【基本算法--高精度计算】大整数相加

    [题目描述] 求两个不超过200位的非负整数的和. [输入] 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. [输出] 一行,即相加后的结果.结果里不能有多余的前导0,即如果结果是3 ...

  8. 大整数相加链表实现(Add Two Numbers)

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {if(null == l1){return l2;}if(null == l2){re ...

  9. 漫画:如何实现大整数相乘?(上)

    戳蓝字"CSDN云计算"关注我们哦! 前一段时间,小灰发布了一篇有关大整数相加的漫画,没看过的小伙伴可以先看一看: 漫画:如何实现大整数相加? 那么,大整数相乘又是如何实现的呢? ...

最新文章

  1. linux脚本中sed -i,Linux 中常用的sed命令
  2. CSS,给我们不一样的体验
  3. 【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )
  4. 产品经验谈:产品经理需要熟知几种常用思维模型
  5. Java Web学习总结(7)——HttpServletRequest对象
  6. Mysql-锁/隔离级别
  7. Spring IOC p名称空间的使用-了解
  8. 改变mysql默认字符集为utf8
  9. box-sizing属性的理解
  10. ▶国务院关于延长中秋国庆放假至10天的通知
  11. 科普:Java 后端开发常用的 10 种第三方服务
  12. 用vscode开发autojs,输出窗口不显示任何输出结果
  13. catia 螺钉外螺纹_请问catia如何画螺杆和螺栓上的螺纹
  14. UNI-APP在自定义组件中内嵌H5/Html网页,可自定义webview大小,加载不闪屏
  15. 计算机网络 直连网,计算机网络基础及局域网构建 静态路由和直连路由 静态路由和直连路由.doc...
  16. U盘容量由于刻录系统造成容量减少的解决方法
  17. Spring Boot、Spring MVC、Spring:它们有什么区别?
  18. 信息隐藏—音频隐藏LSB算法
  19. 雅思计算机基础题及答案,雅思写作大作文真题及参考范文:玩电脑对孩子有益?...
  20. 老子云单模型轻量化即将全新上线

热门文章

  1. 如何有效建设网站外链?
  2. 建设网站套用模板优化难吗?
  3. 格式化时间中HH:mm:ss与hh:mm:ss的区别
  4. python nltk 入门demo
  5. Jquery源码解析-设计理念
  6. 转 MySQL问题排查工具介绍
  7. bgp选路原则【第二部】
  8. 《机器学习技法》---模型聚合
  9. CentOS系统上编译、安装、配置OpenCV
  10. Android--WebView显示Html,让其中的图片适应屏幕宽度