C语言 实现很长整数相加
Description很长整数是指无法用long型数存储的数,因此需要用字符串数组来存储两个被加数,相加的结果也保存于字符数组中,假如被加数长度不超过十进制40位,请编程实现该加法程序并将相加结果输出。
Input
两个很长的整数
Output
很长整数加法结果
Sample Input
55555555555555555555
55555555555555555555
Sample Output
111111111111111111110
程序代码:#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 40
#define FALSE 0
#define TRUE 1
char num1[MAX_LENGTH+10];
char num2[MAX_LENGTH+10];
int an1[MAX_LENGTH+10] = {0};
int an2[MAX_LENGTH+10] = {0};
int main()
{
int i,j;
scanf("%s",num1);
scanf("%s",num2);
memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
int length1=strlen(num1);
int length2=strlen(num2);
j=0;
for(i=length1-1;i>=0;i--)
{
an1[j++]=num1[i]-'0';
}
j=0;
for(i=length2-1;i>=0;i--)
{
an2[j++]=num2[i]-'0';
}
for(i=0;i<MAX_LENGTH;i++)
{
an1[i]+=an2[i];
if(an1[i]>=10)
{
an1[i]-=10;
an1[i+1]++;
}
}
int flagStart=FALSE;
for(i=MAX_LENGTH;i>=0;i--)
{
if(flagStart)
printf("%d",an1[i]);
else if(an1[i])
{
printf("%d",an1[i]);
flagStart=TRUE;
}
}
if(flagStart==FALSE)
printf("0\n");
return 0;
}