一个大数加法程序C 语言。
这段代码实现了一个大数加法程序,能够处理最多300位的数字相加。主要功能包括:1) 接收两个字符串形式的大整数输入;2) 通过reverse()函数将数字字符串倒置;3) 使用big_add()函数逐位相加并处理进位;4) 将结果再次倒置后输出。程序采用数组存储数字,支持不同长度的数字相加,通过字符处理实现大数运算,解决了普通整型变量无法处理超长数字的问题。
/*
12341234324123412342314231412344231234
42554235254234253234542542345423434255657567111123456789101112131715161718
2223456789101112131415161718191、颠倒位置
2、每个位置相加,取各位,10位是 进位3、结果 颠倒位置
*/#include <stdio.h>
#include<string.h>
#define M 300
char a[M] ,b[M],c[M];
void swap(char *a,char *b){char c=*a;*a=*b;*b=c;
}
void reverse(char *s){int i;int len=strlen(s);for(i=0;i<len/2;i++){swap(s+i,s+len-i-1);}
}void big_add(char *a,char*b,char *c) {int i=0,carry=0; int a_len=strlen(a);int b_len=strlen(b);int max_len=a_len>b_len?a_len:b_len;int ca,cb,sum;reverse(a);reverse(b);//puts(a);//puts(b);for(;i<max_len;i++){ca=i<a_len?a[i]-'0':0;cb=i<b_len?b[i]-'0':0;sum =ca+cb+carry;c[i]=sum%10+'0';carry=sum/10; }if(carry==1){c[max_len++]='1';c[max_len]='\0';}else{c[max_len]='\0';}//puts(c);reverse(c);
}int main()
{scanf("%s",a);scanf("%s",b);//puts(a);//puts(b);big_add(a,b,c);puts(c);return 0;
}
