代码:
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #define MAXSIZE 1000
- char res[MAXSIZE+1];//存放结果;
- char a[MAXSIZE],b[MAXSIZE];//存放两个加数;
- int len1,len2;//两个加数的长度;
- void init(char *a){//初始化字符数组;
- for(int i=0;i<MAXSIZE;i++){
- a[i]='0';//全部置零;
- }
- }
- void longAdd(char *res,char *num){//两大数相加的函数;
- int i,j,len,c;//c表示进位;
- c=0;
- len=strlen(num);
- for(i=MAXSIZE-1,j=len-1;i>=0,j>=0;i--,j--){
- int temp=res[i]-'0'+num[j]-'0'+c;
- c=temp/10;
- res[i]=temp%10+'0';
- }
- while(c>0){
- int temp=res[i]-'0'+c;
- c=temp/10;
- res[i]=temp%10+'0';
- i--;
- }
- }
- void input(char *a,char *b){//输入两个大数的函数;
- printf("请输入两个大数:/n");
- scanf("%s %s",a,b);
- len1=strlen(a);
- len2=strlen(b);
- int len=strlen(a);
- init(res);
- for(int i=0;i<len;i++)
- res[i+MAXSIZE-len]=a[i];
- }
- int main(){
- input(a,b);
- longAdd(res,b);
- int i,j;
- for(i=0;i<MAXSIZE;i++){
- if(res[i]!='0')break;
- }
- for(j=i;j<MAXSIZE;j++){
- printf("%c",res[j]);
- }
- printf("/n");
- system("pause");
- }
运行结果: