zoukankan      html  css  js  c++  java
  • 解决大整数相加的算法

    算法主要解决的是用户输入的整数过大而溢出造成的问题。解决办法就是将输入的整数字符串转换到整型数组中,加大型的整数装换为一个一个的为数相加,在逐一打印出来。

    以下为代码:

     1 #include <stdio.h>
     2 #include<string.h>
     3 #define MAXN 1000
     4 int numberA[MAXN], numberB[MAXN], getResult[MAXN];
     5 char chnumA[MAXN], chnumB[MAXN];
     6 // 得到两个输入整数最大的长度
     7 int getLength()
     8 {
     9     int lenA, lenB;
    10     lenA = strlen(chnumA);
    11     lenB = strlen(chnumB);
    12     if (lenA >= lenB)
    13         return lenA;
    14     else
    15         return lenB;
    16 }
    17 
    18 // 初始化整型数组
    19 void init(char *a, int *b)
    20 {
    21     for (int i = strlen(a) - 1, j = 0; i >= 0; i--, j++)
    22     {
    23         b[j] = a[i] - '0';
    24     }
    25 }
    26 
    27 // 两个整形数组祝逐项相加,将结果付给接收的整形数组
    28 int add()
    29 {
    30     int len = getLength();
    31     // 进位数值
    32     int tem = 0, i = 0;
    33     for (i = 0; i < len; i++)
    34     {
    35         int sum = numberA[i] + numberB[i] + tem;
    36         getResult[i] = sum % 10;
    37         tem = sum / 10;
    38     }
    39     // 如果进位超出了长度范围
    40     len = i;
    41     while (tem)
    42     {
    43         getResult[len++] = tem % 10;
    44         tem /= 10;
    45     }
    46     return len;
    47 }
    48 
    49 int main()
    50 {
    51     int count;
    52     printf("请输入要实验的次数:");
    53     scanf("%d", &count);
    54     for (int i = 0; i < count; i++)
    55     {
    56         printf("请输入要两个整数:");
    57         scanf("%s %s", chnumA, chnumB);
    58         init(chnumA, numberA);
    59         init(chnumB, numberB);
    60         int len = add();
    61         printf("%s + %s = ", chnumA, chnumB);
    62         for (int i = len - 1; i >= 0; i--)
    63         {
    64             printf("%d", getResult[i]);
    65         }
    66         printf("\n");
    67     }
    68     printf("测试结束");
    69 }
  • 相关阅读:
    js变量类型
    js词法分析
    ORACLE 查找字段在哪些表里存在
    主外键约束的关闭和启用
    pl/sql developer 编码格式设置(转)
    WIN7 Net Configuration Assistant打不开
    Kettle 连接失败 Oracle 数据库报 ora-12505 的解决方法(转)
    正则表达式30分钟入门教程(转)
    设置程序的多个入口,进行动态的显示
    应用多入口配置
  • 原文地址:https://www.cnblogs.com/hanyuan/p/big_int_add.html
Copyright © 2011-2022 走看看