zoukankan      html  css  js  c++  java
  • C语言 · 高精度加法

    问题描述
      输入两个整数ab,输出这两个整数的和。ab都不超过100位。
    算法描述
      由于ab都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
      定义一个数组AA[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b
      计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
      最后将C输出即可。
    输入格式
      输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
    输出格式
      输出一行,表示b的值。
    样例输入
    20100122201001221234567890
    2010012220100122
    样例输出
    20100122203011233454668012
     
     1 /*
     2 分析:
     3 
     4 1.可能两个数的长度不同,那么就需要在一个数加完之后把另一个数的剩下的数全加上。
     5 
     6 2.判断最高位,如果最高位有进位,那么还需要把进位位加上。
     7 */
     8 #include<stdio.h>
     9 #include<string.h>
    10 int main()
    11 {
    12     char a[200],b[200];//定义字符串数组
    13     int c[500]; 
    14     scanf("%s%s",a,b);//输入字符串数组
    15     int i,j,k=0,r=0;
    16     int lena,lenb;
    17     lena = strlen(a);
    18     lenb = strlen(b);
    19     for(i=lena-1,j=lenb-1;i>=0&&j>=0;i--,j--){  
    20         int p=(a[i]-'0')+(b[j]-'0')+r;    
    21         r=p/10;//进位  
    22         c[k++]=p%10;//余数加到数组中  
    23     }
    24     while(i>=0){   //如果b中的数加完了  
    25         int p=(a[i]-'0')+r;  
    26         r=p/10;  
    27         c[k++]=p%10;  
    28         i--;  
    29     }  
    30     while(j>=0){    //如果a中的数加完了  
    31         int p=(b[j]-'0')+r;  
    32         r=p/10;  
    33         c[k++]=p%10;  
    34         j--;  
    35     }  
    36     if(r){//判断最高位有没有进位
    37         c[k++]=r;  
    38     }  
    39     for(int i=k-1;i>=0;i--){//输出结果 
    40         printf("%d",c[i]);
    41     }
    42     return 0;
    43 } 
  • 相关阅读:
    UNIX环境C
    UINX标准C
    centOS 部署服务器(三)
    centOS 部署服务器(二)
    centOS 部署服务器(一)
    mysql数据库的还原及常见问题解决
    tomcat启动报错java.lang.OutOfMemoryError:PermGen space解决办法
    mysql 使用service mysqld start 提示未识别服务 进入/etc/rc.d/init.d 下面未发现有mysqld解决方法
    数据库表修复问题
    Ubuntu系统图形化界面无法登录到root用户的解决方法
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6259809.html
Copyright © 2011-2022 走看看