lanoo

大数的加法计算

C语言实现大数的加法计算。

#include <stdio.h>
int main()
{
    
char a[1000];
    
//获取第一个数 
    int Count1 = 0;
    
for(int i=0;(a[i]=getchar())!='\n';i++)
    Count1
++;
    
int Cou1 = (Count1%2==0)?Count1/2:(Count1/2+1);
    
char fnum[Cou1];
    
for(int i=Cou1-1;i>0;i--)
    
{
     fnum[i]
=((2*Cou1-1)<Count1)?(a[2*i]*10+a[2*i+1]-528):(a[2*i-1]*10+a[2*i]-528);
    }

    fnum[
0]=((2*Cou1-1)<Count1)?(a[0]*10+a[1]-528):(a[0]-48);
    
//获取第二个数 
    int Count2=0;
    
for(int i=0;(a[i]=getchar())!='\n';i++)
    Count2
++;
    
int Cou2 = (Count2%2==0)?Count2/2:(Count2/2+1);
    
char snum[Cou2];
    
for(int i=Cou2-1;i>0;i--)
    
{
     snum[i]
=((2*Cou2-1)<Count2)?(a[2*i]*10+a[2*i+1]-528):(a[2*i-1]*10+a[2*i]-528);
    }

    snum[
0]=((2*Cou2-1)<Count2)?(a[0]*10+a[1]-528):(a[0]-48);
    
//开始结算结果 
    int CountL=(Cou1<Cou2)?Cou1:Cou2;
    
int CountH=(Cou1>Cou2)?Cou1:Cou2;
    
char result[CountH];
    
char Bool=0;
    
for(int i=0;i<CountL;i++)
    
{
     result[CountH
-1-i]=(Bool==1)?(fnum[Cou1-1-i]+snum[Cou2-1-i]+1):(fnum[Cou1-1-i]+snum[Cou2-1-i]);
     Bool
=0;
     
if(fnum[Cou1-1-i]+snum[Cou2-1-i]>100)
     
{
      Bool
=1;
      result[CountH
-1-i]-=100;
     }
     
    }

    
for(int i=0;i<CountH-CountL;i++)
    result[i]
=(Cou1>Cou2)?fnum[i]:snum[i];
    
if(Bool==1)printf("1");
    
for(int i=0;i<CountH;i++)
    
{
     
if(result[i]>=10||i==0) printf("%d",result[i]);
     
else printf("0%d",result[i]);
    }

    getchar();
}


DEV c++ 编译通过

posted on 2008-04-10 14:50  &lanoo;  阅读(379)  评论(0)    收藏  举报