大数加法2——在较短的加数前补充前导零

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

int main()
{
    char str1[255], str2[255];
    int num1[255] = { 0 }, num2[255] = { 0 };//用于存放加数,且较短者补前导零
    int sum[255] = { 0 };
    int length1, length2, length;
    int i, j;

    gets(str1);
    gets(str2);
    length1 = strlen(str1);
    length2 = strlen(str2);
    length = length1 > length2 ? length1 : length2;

    //将两个加数存入到num[]中
    for (i = length - 1,j = length1 - 1; j >= 0; i--,j--)
    {
        num1[i] = str1[j] - ‘0‘;
    }

    for (i = length - 1, j = length2 - 1; j >= 0; i--, j--)
    {
        num2[i] = str2[j] - ‘0‘;
    }

    //从后往前进行加法计算
    for (i = length - 1; i >= 0; i--)
    {
        sum[i] = sum[i] + num1[i] + num2[i];
        if ((sum[i] >= 10) && (i != 0))
        {
            sum[i] = sum[i] - 10;
            sum[i - 1]++;//表示进位
        }
    }

    for (i = 0; i < length; i++)
    {
        printf("%d", sum[i]);
    }

    return 0;
}

大数加法2——在较短的加数前补充前导零

时间: 2024-11-10 03:47:57

大数加法2——在较短的加数前补充前导零的相关文章

大数减法2——在较短的数前补充前导零,以对齐最低位

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> int main() { char str1[255], str2[255]; int num1[255] = { 0 }, num2[255] = { 0 };//用于存放减数和被减数,且较短者补前导零 int dvalue[255] = { 0 }; int length1, length2, length; int i, j; int ne

大数加法、减法、乘法

大数四则运算--C++实现 大数处理--c++实现 本课题来自我的c++编程作业,文章利用大数处理类,类名:hugeNumber来对大数(编译器自定义的数值类型无法处理的数)进行四则运算(大数加法.大数减法及大数乘法的运算,除暂时没实现)和按精度四舍五入,自定义科学计数法等.内容广泛涉及运算符重载.字符连接.字符加减和字符乘除等作者原创函数.重要提示:本文涉及的所有函数使用的进制皆为10进制.(备注:已将该博客搬迁至CSDN) 一.解题思路 1 核心思想 文章用hugeNumber类对大数进行操

c#大数加法

在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数.货币类型也不是无限大.如果我们需要表示更大的数,就需要用到一定的算法来完成. 这次,我和大家一起讨论一下c#的大数运算之加法. 这次,我们只考虑正数的整数加法. 我们的代码要封装到一个结构里面.这个结构的结构先摆出来. public struct BigInt { public int[] num

K:大数加法

相关介绍: ?在java中,整数是有最大上限的.所谓大数是指超过整数最大上限的数,例如18 452 543 389 943 209 789 324 233和8 123 534 323 432 323 432 123 212 443就是两个大数,在java中这是无法用整型int变量或长整型long变量来进行保存的,更不用说保存他们之间相加的和了.为解决该问题,可以把两个相加数看成是字符串,将这些数的相应数字存储在两个堆栈中,并从两个栈中弹出对应位的数字依次执行加法可得到结果,以784和8465为例

练习题——大数加法

大数指位数超长的数,以至于使用int(32,64)等C++语言内置数据类型已经不足以涵盖. 这里实现1000位的大数加法. 思路为将数保存成字符数组/字符串形式,按位模拟手工计算时的加法, 主要步骤为: 1)获取原数和加数的位数 2)如果位数相同不做处理,位数不同,则需要将小的数前补0对齐到大的数 (如 101 + 99,需要将99前补0对齐到101, 变成101+ 099) 3)从后至前,从左至右,按位相加处理进位 4)若最左边发生了进位,则视为溢出的情况,此时需要将结果整体右移一位,在左边补

C语言 &#183; 大数加法

算法提高 大数加法 时间限制:1.0s   内存限制:256.0MB 问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. 输出格式 一行,a+b的值. 样例输入 42 样例输出 6 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char a[1001],b[1001]; 6 int s[1001],d[1001]; 7 scanf("

NI笔试——大数加法

NI笔试: 1.找出字符串第一次出现的字符.用数组建立哈希表,然后再扫描字符串并判断次数是否为1. 2.大数加法,即字符串加法.因为之前写过乘法,就以为是乘法.然后就把乘法写上去了····= = 好了,看一下加法的思路. 要不要太简单,用俩数组,先把字符串每个位转换成数字存到这俩数组里,然后对每一位进行加和. 代码是拿别人的.= = void Add(char s1[],char s2[]) //需要两个字符串参数&&无返回值 { int num1[M],nm2[M]; int i,j;

大数加法、乘法

1 #include<iostream> 2 3 #include<stdio.h> 4 5 #include<string.h> 6 7 #define Len 3000//大数的长度 8 9 using namespace std; 10 11 int Input (char n[])//将大数读入的函数 12 13 { 14 15 char s[Len]; 16 17 int i,l; 18 19 20 21 for(i=0; i<Len; i++) n[i

A + B Problem II(大数加法)

一直格式错误,不想改了,没A 1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 using namespace std; 6 7 int main() 8 { 9 int T,K=0; 10 scanf("%d",&T); 11 char a[1002],b[1002]; 12 int ta[1002],