注意:

这只是100位数(十进制)以内的正整数的加法

目录

法一

法二

一、为什么不能简单的A+B

二、大数加法的原理

篇尾


我终于在今天写出来了o(*≧▽≦)ツ┏━━┓

法一

#include <stdio.h>
#include<string.h>
int main(){
//定义变量、初始化 char a[101],b[101];int c[101]={0};for(int i=0;i<101;i++){a[i]='0';b[i]='0';}
//输入大数、判断长度  scanf("%s %s",a,b);int long_a=strlen(a);int long_b=strlen(b);int long_max=long_a>long_b?long_a:long_b;int long_min=long_a>long_b?long_b:long_a;
//倒过来 strrev(a);strrev(b);//printf("%s %s\n",a,b);for(int i=0;i<long_max;i++){c[i]+=((int)a[i]-48)+((int)b[i]-48);if(i==long_min)c[i]+=48;}
//定义输出数组(已完成两次颠倒),初始化 int output[long_max];for(int i=0;i<long_max;i++){output[i]=0; }for(int i=0;i<long_max;i++){output[long_max-i-1]=c[i];}
//进位问题for(int i=long_max-1;i>0;i--){if(output[i]>=10){output[i-1]+=1;output[i]=output[i]%10;}}printf("\n");for(int i=0;i<long_max;i++){printf("%d",output[i]);}return 0;
}

写出来后发现

Σ(っ °Д °;)っ

找了半天原因,发现是不能用 strrev( );

这个我也不太清楚,大概是我刷题的平台的 string.h 库里没有这个函数吧,

了解情况后,我决定通过循环实现 strrev() 函数的功能。

法二

#include <stdio.h>
#include<string.h>
int main(){
//定义变量、初始化 char x[101],y[101],a[101],b[101];int c[101]={0};for(int i=0;i<101;i++){x[i]='0';y[i]='0';a[i]='0';b[i]='0';}
//输入大数、判断长度  scanf("%s %s",x,y);int long_a=strlen(x);int long_b=strlen(y);int long_max=long_a>long_b?long_a:long_b;int long_min=long_a>long_b?long_b:long_a;
//倒过来 for(int i=0;i<=long_a;i++){a[i]=x[long_a-i-1];}for(int i=0;i<=long_b;i++){b[i]=y[long_b-i-1];}
//字符变整型 for(int i=0;i<long_max;i++){c[i]+=((int)a[i]-48)+((int)b[i]-48);if(i==long_min)c[i]+=48;}
//定义输出数组(已完成两次颠倒),初始化 int output[long_max];for(int i=0;i<long_max;i++){output[i]=0; }for(int i=0;i<long_max;i++){output[long_max-i-1]=c[i];}
//进位问题for(int i=long_max-1;i>0;i--){if(output[i]>=10){output[i-1]+=1;output[i]=output[i]%10;}}
//输出for(int i=0;i<long_max;i++){printf("%d",output[i]);}return 0;
}

这道题困惑了我好几天,ac时真的非常激动,以后掌握的牢了会来简化代码

感觉有点水,好了,正文开始

一、为什么不能简单的A+B

在C语言中,每个数据类型都是有表示范围的,这个我以后会写一篇细讲

目前,表示正整数范围最大的数据类型是 unsigned long long (int),

表示范围是 0~4294967295 即 0~( -1),

也就是说只用基本数据类型,十位数的运算就是到极限了,

这时,想要进行大数运算,就要另寻他法了。

二、大数加法的原理

其实,就是我们小学学的列式法,一位一位的加,大于十就进位。

篇尾

我也是初学者,知识限制,代码比较笨,网上大数加法代码多着是,我提供的只是一种的思路。

大数加法(100位数)相关推荐

  1. 大数问题:大数加法 与 大数乘法 最简单大数乘法

    大数加法很简单,大叔乘法只是以大数加法为基础的,光从难度来说,两者差不多. 思路:这里没有借鉴别人牛逼的算法,现在也没有这个需求,就用最通俗的思路自己想了一个. 先举一个简单的例子 所以乘法就是每一位 ...

  2. 大数加法(ascll转换),利息计算(数组,sizeof与循环运用)

    一,大数加法 大数加法顾名思义,在超过long int 类型所承受的的较大数之间的加法运算,主流方法就是对数进行类型转换,如转换成字符串字符数组再对其依次相加,较为相识方式就是对10不断取余数,余数相 ...

  3. 大数加法分析及C语言实现(加数可为负数)

    大数加法(加数可为负数) ·分析: 大数加法有如下几种情况: 1.两数同号 (1)同正:如,s1=11,s2=22:s1=0,s2=0 (2)同负:如,s1=-11,s2=-22 2.两数异号 (1) ...

  4. 大数加法【HDU 1002】

    大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...

  5. 51nod题解 1005 大数加法

    51nod 1005 大数加法 前言:不知不觉就已经快要大三了,意识到自身的专业水平还有很大的不足,也该收收心把心思放在学习上了.这是我刷的第一道题,也是我第一次写博客,想通过记录博客的形式记录下自己 ...

  6. 大数系列——大数加法

    这几天专门学习了一下大数的有关计算方法,大数加减乘除模都会在后面讲到. 一.大数加法: 加法算是最简单的一类大数问题,先写上我的代码: <span style="font-size:1 ...

  7. python【蓝桥杯vip练习题库】ADV-136大数加法(高精度加法)

    试题 算法提高 大数加法 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. ...

  8. Java实现大数乘法_java实现大数加法、乘法(BigDecimal)

    之前写过用vector.string实现大数加法,现在用java的BigDecimal类,代码简单很多.但是在online-judge上,java的代码运行时间和内存大得多. java大数加法:求a+ ...

  9. python加法怎么写_51NOD 大数加法以及python写法

    大数加法一般为小学生式的"竖式计算"要特别注意的是借位与进位的问题(先给看c++写法,我怕先看了python写法,会看不下去c++写法)这题还有要注意的是 1.同符号的话,直接加就 ...

最新文章

  1. 阿里当 PM 需要做什么?程序媛的亲身经历告诉你!| 程序员有话说
  2. 真正的 Tornado 异步非阻塞
  3. 基于React Native和Ethers.js的电子钱包(三):Ethers.js
  4. python识别人脸多种属性_人脸检测及识别python实现系列(4)——卷积神经网络(CNN)入门...
  5. 江湖召集:.NET开发者们看过来,这场长沙的开发者技术大会正是为你精心准备的大餐...
  6. WebApp 开发中常用的代码片段
  7. 10种开发以及改善应用的低成本方法
  8. python常见的控制流结构有_【Python】控制流语句、函数、模块、数据结构
  9. 26. Location assign() 方法
  10. 14道Python基础练习题(附答案)
  11. 检验检测机构LIMS系统应用
  12. 云计算机房架构图,云计算架构技术与实践
  13. 剑指offer_3 -- 构建乘积数组
  14. 全国计算机二级考试web程序,2018年全国计算机二级web程序考试考什么内容
  15. 应用分发平台之苹果超级签名流程分析及API错误
  16. [Mac软件推荐] 三款提高 Mac 使用效率的必备软件
  17. AI技术是什么?AI对生活的影响有哪些?
  18. 示例程序009--阙值化(二值化,cvThreshold)
  19. TPLINK TL-AP1300I-PoE功能失常导致网络故障一例
  20. 模块msvcp140.dll加载失败怎么解决

热门文章

  1. 利用计算机技术教学图片,计算机应用技术专业实习教学计划
  2. go语言服务器 行情,Go语言在证券期货行情系统中的实践(32页)-原创力文档
  3. linux文件属主,ubuntu linux修改文件所属用户(owner属主)和组(groud属组、用户组)
  4. python查看历史记录_用Python获取B站播放历史记录
  5. 《跟我学算法系列文章——一文学会数据结构套路》
  6. 太二跨界出猫粮,是破圈还是噱头?
  7. eclipse调试安卓手机(华为)不打印log
  8. 西游记的境界极高,鲜有人深入理解
  9. sqlserver存储过程进行产量查询
  10. 27岁,月入7位数:找到自己“天赋”的技术人,到底有多赚?