天天看點

大數相加 HDOJ1002

/*

在函數中可以用指針來控制數組的變化

注意大數的輸入和輸出

/*

#include<stdio.h>

#include<string.h>

#define LEN 1005

char a[LEN],b[LEN],c[LEN];

void input(char s[],char *p)

{

int l,i;

l=strlen(s);

for(i=0;i<l;i++)

{

*(p+i)=s[l-i-1]-'0';

}

}

void add()

{

int i;

memset(c,0,sizeof(c));

for(i=0;i<LEN-1;i++)

{

c[i]=a[i]+b[i];

}

for(i=0;i<LEN;i++)

{

if(c[i]>=10)

{

c[i+1]+=c[i]/10;

c[i]=c[i]%10;

}

}

}

void print(char s[])

{

int i;

for(i=LEN-1;i>0;i--)

{

if(s[i]!=0) break;

}

for(;i>=0;i--)

{

printf("%d",s[i]);

}

}

int main()

{

int icase,i;

char a0[LEN],b0[LEN];

scanf("%d",&icase);

for(i=1;i<=icase;i++)

{

scanf("%s%s",a0,b0);

memset(a,0,sizeof(a)); memset(b,0,sizeof(b));

input(a0,a);

input(b0,b);

add();

printf("Case %d:\n",i);

print(a);printf(" + ");

print(b);printf(" = ");

print(c);printf("\n");

if(i!=icase) printf("\n");

}

return 0;

}

ACM