当前位置: 首页 > article >正文

求两大数和

题目描述

大数加法问题

大数的输入不能简单定义整数变量,因为存不下这么大的数,要采用字符串输入方式,把大数存入到字符串中,按照数码位个位对齐,逐个数码位相加

数字字符做对应数值的加法规则

'5'+'8'  =>   ('5'-'0')+('8'-'0')=13 

13表示有个进位1 ,数字3=>  3+'0' =>'3'

本题求多组大数的加法,结果每行占一行

输入

第一行输入一个整数n(n<=20)
以下n行中每行包含两个整数(大数)

输出

求两个大数和的结果,每行一个

样例输入

2 111111111111111111111 222222222222222222222 999 888

样例输出

333333333333333333333 1887

提示

 两个大数的输入可以采用scanf("%s %s",a,b);

#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 110 // 为了存储大数,设置一个足够大的长度

void addLargeNumbers(char* num1, char* num2, char* result) {
    int len1 = strlen(num1);
    int len2 = strlen(num2);
    int carry = 0; // 进位
    int i, j, k;

    // 从尾部开始加
    for (i = len1 - 1, j = len2 - 1, k = 0; i >= 0 || j >= 0 || carry; i--, j--, k++) {
        int digit1 = (i >= 0) ? num1[i] - '0' : 0; // 如果num1已经加完,则取0
        int digit2 = (j >= 0) ? num2[j] - '0' : 0; // 如果num2已经加完,则取0

        int sum = digit1 + digit2 + carry; // 计算当前位的和
        carry = sum / 10; // 计算进位
        result[k] = (sum % 10) + '0'; // 记录当前位
    }

    // 反转结果字符串
    result[k] = '\0'; // 添加字符串结束符
    for (int start = 0, end = k - 1; start < end; start++, end--) {
        char temp = result[start];
        result[start] = result[end];
        result[end] = temp;
    }
}

int main() {
    int n;
    scanf("%d", &n); // 读取测试案例的数量

    for (int i = 0; i < n; i++) {
        char num1[MAX_LENGTH], num2[MAX_LENGTH], result[MAX_LENGTH];
        scanf("%s %s", num1, num2); // 读取两个大数

        addLargeNumbers(num1, num2, result); // 进行大数加法
        printf("%s\n", result); // 打印结果
    }

    return 0;
}

 


http://www.kler.cn/a/453790.html

相关文章:

  • 软件开发中 IT 人力外包驻场有哪些优点
  • 《Opencv》基础操作详解(2)
  • 【电商搜索】文档的信息论生成聚类
  • CSS系列(33)-- Perspective详解
  • 搜索模拟版!!!(自创)
  • C/C++ 数据结构与算法【树和二叉树】 树和二叉树,二叉树先中后序遍历详细解析【日常学习,考研必备】带图+详细代码
  • 电压控制环与电流控制环
  • 数学建模与数学建模竞赛
  • WPF+MVVM案例实战与特效(四十七)-实现一个路径绘图的自定义按钮控件
  • FD(File Descriptor)泄漏
  • 虚幻引擎结构之TArray
  • niushop开源商城靶场漏洞
  • 高校网络安全存在的问题与对策研究
  • PCB注意事项
  • mac 关闭 sip
  • new_event_loop k8s 不显示log
  • 真实环境下实车运行,新能源汽车锂离子电池数据集
  • 同源策略详解
  • windows安装vmware
  • Flink 集群有哪些⻆⾊?各⾃有什么作⽤?