大数相加

来源:互联网 发布:逆战挂机宏数据 编辑:程序博客网 时间:2024/06/14 04:01
/*  Name:   Copyright:   Author:   Date: 24/08/12 16:34  Description:   Reference:   http://blog.csdn.net/tangxianghenggood/article/details/5776629               */#include<stdio.h>#include<string.h>int main(){    char a[200] = {0};    char b[200] = {0};            int i=0,j=0,k=0;    int al=0;    int bl=0;    int result;        printf("please input a\n");    while((a[al] = getchar()) != '\n')    {     if(a[al] >= '0' && a[al] <= '9')              {               a[al] = a[al] - '0';               al++;                    }                      else {               printf("intput error");               exit(0);                                          }        }    printf("the number a is   ");    for(i=0;i<al;i++)   printf("%d",a[i]);    printf("\n");        printf("please input b\n");        while((b[bl] = getchar()) != '\n')    {     if(b[bl] >= '0' && b[bl] <= '9')              {                       b[bl] = b[bl] - '0';                       bl++;              }                      else {               printf("intput error");               exit(0);                         }        }    printf("the number b is   ");    for(i=0;i<bl;i++)   printf("%d",b[i]);    printf("\n");              if(al >= bl)    {          j = al;          k = bl;          for(;bl > 0;)          {                result = (a[al-1]+b[bl-1])/10;                a[al-1] = (a[al-1]+b[bl-1])%10;                al --;                bl --;                a[al-1] = a[al-1] + result;          }           if(result > 0)                    for(;al > 1;)                    {                      al --;                                            a[al-1]  += a[al]/10;                            a[al] %= 10;                    }                     for(i=0;i<j;i++)   printf("%d",a[i]);        }    else {          j = al;          k = bl;          for(;al > 0;)          {                result = (a[al-1]+b[bl-1])/10;                b[bl-1] = (a[al-1]+b[bl-1])%10;                al --;                bl --;                b[bl-1] = b[bl-1] + result;          }           if(result > 0)                    for(;bl > 1;)                    {                      bl --;                                            b[bl-1]  += b[bl]/10;                            b[bl] %= 10;                    }           for(i=0;i<k;i++)   printf("%d",b[i]);         }        getchar();}


原创粉丝点击