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; }