博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数加法
阅读量:6296 次
发布时间:2019-06-22

本文共 1553 字,大约阅读时间需要 5 分钟。

要点: (1)运算顺序:两个数靠右对齐;从低位向高位运算;先计算低位再计算高位;(2)运算规则:同一位的两个数相加,然后再加上从低位来的进位,成为该位的和;    这个和再去掉向高位的进位就成为该位的值;如上例:3+8+1=12,向前一位进1(用 / 取整得到),本位的值是2(用 % 得到);(3)最后一位的进位:如果完成两个数的相加后,进位位值不为0,则应添加一位;(4)如果两个加数位数不一样多,则按位数多的一个进行计算;

 

代码:

#include
#include
#include
#include
#include
using namespace std;int main(){ char a[1005]; char b[1005]; int aa[1005]; int bb[1005]; int c[1005]; while(~scanf("%s %s",&a,&b)) { memset(aa,0,sizeof(aa));///清空aa数组,避免因为初始化而加错值 memset(bb,0,sizeof(bb));///清空aa数组 ///计算两个加数的长度 ///如果两个加数位数不一样多,则按位数多的一个进行计算 int lena = strlen(a); int lenb = strlen(b); ///把加数 字符数组变成整型, ///而且因为计算的时候是又最低位开始计算, ///所以变成整型的时候改变一下顺序 ///即 char 型 aa=123456 放到整型里即a[5] = b [0]- '0' ; a[4] = b[1]-'0' for(int i = 0; i < lena; i++) { aa[lena-1-i] = a[i]-'0'; } for(int i = 0; i < lenb; i++) { bb[lenb-1-i] = b[i]-'0'; } int lenc = max(lena,lenb); int jinwei = 0; for(int i = 0 ; i < lenc ; i++) { c[i] = (aa[i] + bb[i] + jinwei) % 10; jinwei = (aa[i] + bb[i] + jinwei) / 10; } if(jinwei != 0) { c[lenc++] = jinwei ; ///第一次即长度的值,之后才会自加 } for(int i = lenc - 1; i >= 0; i--) { printf("%d",c[i]); } puts(""); } return 0;}

 

转载于:https://www.cnblogs.com/mcgrady_ww/p/7646750.html

你可能感兴趣的文章
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>
机智云开源框架初始化顺序
查看>>
Spark修炼之道(进阶篇)——Spark入门到精通:第五节 Spark编程模型(二)
查看>>
一线架构师实践指南:云时代下双活零切换的七大关键点
查看>>
ART世界探险(19) - 优化编译器的编译流程
查看>>
玩转Edas应用部署
查看>>
music-音符与常用记号
查看>>
sql操作命令
查看>>
zip 数据压缩
查看>>
Python爬虫学习系列教程
查看>>
【数据库优化专题】MySQL视图优化(二)
查看>>
【转载】每个程序员都应该学习使用Python或Ruby
查看>>
PHP高级编程之守护进程,实现优雅重启
查看>>
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>