代码如下

#include <stdio.h>
#include <string.h>
#include <math.h>
void printf_arr(int* arr) { // 输出数组的值
    for (int i = arr[0]; i > 0; i--) {
        printf("%d", arr[i]);
    }
    printf("\n");
    return;
}
int big_add(int* a, int* b, int* ans_ab) {
    ans_ab[0] = a[0] > b[0] ? a[0] : b[0]; // 和的长度
    int min = a[0] <b[0] ? a[0] : b[0];
    for (int i = 1; i <= ans_ab[0]; i++) {
        if(i<=min) ans_ab[i] = a[i] + b[i]; // 加法运算
        if (i > min && a[0] == min) ans_ab[i] = b[i];
        if (i > min && b[0] == min) ans_ab[i] = a[i];
    }
    for (int i = 1; i <= ans_ab[0]; i++) { // 处理进位
        if (ans_ab[i] > 9) 
        {
            ans_ab[i + 1] += ans_ab[i] / 10;//进几个十
            ans_ab[i] %= 10;//剩下的个位数字
            if (i == ans_ab[0]) ans_ab[0]++; // 最高位大于9,长度+1
        }
    }
    return 1;
}

void jiafa(int n1[], int n2[])
{
    int ans[1005] = { 0 };
    //2、 算法计算-------------------
    big_add(n1, n2, ans);
    printf_arr(ans);
}
// 交换两个数组
void swap_arr(int* n1, int* n2) {
    int max_len = n1[0] > n2[0] ? n1[0] : n2[0];
    int temp;
    for (int i = 0; i <= max_len; i++) {
        temp = n2[i];
        n2[i] = n1[i];
        n1[i] = temp;
    }
    return;
}
// 计算大整数减法 n1 - n2
int jianfa(int n1[], int n2[]) {
    int ans[1005] = { 0 };
    int flag = 1; // 如果 n1 > n2 即 flag = 1
    if (n1[0] < n2[0]) flag = 0;
    if (n1[0] == n2[0]) {//位数相同的话
        int i = n1[0],k=n1[0];
        while (i > 0) {
            if (n1[i] == n2[i]) i--,k--;
            if (n1[i] > n2[i]) i = 0; // 要考虑每位都大的情况
            if (n1[i] < n2[i]) {
                flag = 0;
                break;
            }
        }
        if (i == 0&&k==0) {
            printf("%d\n", 0); // 位数相等,每一位也相等,差值为0
            return 0;
        }
    }
    if (flag == 0) swap_arr(n1, n2); // n1 < n2  交换相减
    for (int i = 1; i <= n1[0]; i++) {
        if (n1[i] < n2[i]) {
            n1[i] += 10;
            n1[i + 1] -= 1;
        }
        if (n1[i] >= 0 && n2[i] >= 0) ans[i] = n1[i] - n2[i];
        if (n1[i] >= 0 && n2[i] == -3) ans[i] = n1[i] - 0;
    }

if (flag == 0) printf("-");
    int flag_0 = 0;  // 判断当前的0是否要输出,如果之前输出过正整数,则当前的0需要输出
    for (int i = n1[0]; i > 0; i--) {
        if (ans[i]) printf("%d", ans[i]), flag_0 = 1;
        if (ans[i] == 0 && flag_0 == 1) printf("%d", 0);
    }

思路借鉴于

我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《大整数(1000位)的加减乘除运算》, 一起来围观吧 https://blog.csdn.net/wu496963386/article/details/121793548?utm_source=app&app_version=5.2.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

大整数1000位包括正负数的加减运算相关推荐

  1. c语言任意两个整数相减_大整数加减运算的C语言实现

    大整数加减运算的 C 语言实现 一 . 问题提出培训老师给出一个题目:用 C 语言实现一 个大整数计算器.初步要求支持大整数的加.减运算,例如 8888888888888+1112=888888889 ...

  2. 第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成

    文章目录 算术逻辑单元 逻辑运算 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 加法器原理 补码加法器原理 无符号整数加减法 标志位的生成 算术逻辑单元 算术逻辑单元就是运算器里面的AL ...

  3. php 超大整数计算,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...

    [分享]PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨 分享一个溢出整数加减的运算函数,刚刚写的,对于溢出的整数可以用这个来进行加减运算. 遗憾的几点是: 一代码太多: 二只有 ...

  4. php中超过int真么办,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...

    [分享]PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨 分享一个溢出整数加减的运算函数,刚刚写的,对于溢出的整数可以用这个来进行加减运算. 遗憾的几点是: 一代码太多: 二只有 ...

  5. 【计算机组成原理 数字逻辑 Verilog】32位加法器的实现:支持整数的加减运算

    目录 0 前言 0.1 使用环境 0.2 知识点 0.3 注意事项 1 建模:1位加法器 1.1 构建基础模型 1.1.1 一位加法器 1.1.1.1 科技黑箱:外部端口与功能 1.1.1.2 揭秘黑 ...

  6. 整数加减运算的二进制表示

    两位整数的加减都可看做 一个数加上另一个数,首先我们要把数据的二进制表示转化成补码,因为在计算机内部,数据的加减是按补码进行运算的. A补+B补=(A+B)补(mod 2^n+1) 连同符号位相加,符 ...

  7. 【嵙大OJ】Problem 1475: 掰手指头学加减

    Problem D: 掰手指头学加减 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 762  Solved: 412 [Submit][Status] ...

  8. 正则匹配——python用一个正则表达式从字符串中提取数字(包括整数、小数、正负数)

    import re# 从字符串中提取数字 totalCount = '-100,abc2.4-123s,d-1ds-0.234as123.2s1.3bb.24' count = re.findall( ...

  9. JS input校验只能输入数字(包括正负数、小数)

    今天做项目刚好遇到对input进行校验的问题,就在网上搜索研究了一下,发现目前多数的校验方法都不行或者是不全面,就试着自己写了一个,刚开始选择直接用正则表达式,发现还是高估自己了('_'),世上无难事 ...

最新文章

  1. hbase源码系列(十二)Get、Scan在服务端是如何处理?
  2. 高清重制版阿波罗11号录像,英伟达RTX还原50年前登月细节
  3. %02 java_02-java
  4. 学好python需要多久-python入门要学多久
  5. logging日志配置,day95下午
  6. Entity Framework6学习笔记(一)
  7. D1net阅闻:Google Analytics增AI自动化分析功能
  8. 微信第一个“小程序”亮相:不是APP胜似APP!
  9. FMCW毫米波雷达原理
  10. centos yum方式安装nginx 并支持https
  11. 基于Modbus TCP的MCGS上位机软件教程
  12. java--javassist学习
  13. 综合集团如何利用oa系统实现协同办公
  14. Protected multilib versions XXX
  15. 服务器中修改数据库配置,服务器修改数据库配置未生效
  16. 血手耳机与笔记本驱动冲突
  17. 测试当前访问百度的IP地址(代理IP)
  18. 微软新Logo四色代表什么?Win8/Office/Xbox等
  19. 关于读书的一些方法--摘自李笑来《人人都能用英语》
  20. (转)tomcat与地址栏图标之研究(多浏览器)

热门文章

  1. 从没想到过的今天—兄弟连IT教育
  2. Python实现批量压缩图片
  3. javafx逻辑实现五子棋基本功能(悔棋,重新开始,保存棋谱,复盘,人人对战,单机模式
  4. 2022千乐微云技术学习任务计划
  5. pytorch构建YOLOV7网络结构
  6. Qt+VLC编写的流媒体播放器
  7. sqlserver将mdf文件拆分成多个ndf文件
  8. Google Glass众叛亲离?
  9. matlab的persistent,matlab 利用persistent关键字 存储持久变量
  10. oracle上机题库_oracle考试题库