C语言——高精度问题
1、高精度计算的本质:竖式计算;
2、适用解决超出long long int 范围的大整数计算
#include<stdio.h>
#include<string.h>
#define N 100
char str1[N+4]={0},str2[N+4]={0};
int arr1[N+4]={0},arr2[N+4]={0};
int ans[N+5]={0};//将字符串转化成整型存储在新的int数组中,倒序存放
void transform(char *str,int *arr,int len){arr[0]=len;//用ans[0]记录数组长度for(int i=0;i<len;i++){arr[len-i]=(str[i]-'0');}return;
}//实现竖式相加,并且实现进位
void add_big_num(int* arr1,int* arr2,int* ans){ans[0]=arr1[0]>arr2[0]?arr1[0]:arr2[0];for(int i=1;i<=ans[0];i++){ans[i]=arr1[i]+arr2[i];}for(int i=1;i<=ans[0];i++){if(ans[i]<10) continue;ans[i+1]=ans[i+1]+(ans[i]/10);ans[i]=ans[i]%10;if(i==ans[0]) ans[0]++;}return;
}int main(){scanf("%s %s",str1,str2);int len1=strlen(str1);int len2=strlen(str2);transform(str1,arr1,len1);transform(str2,arr2,len2);add_big_num(arr1,arr2,ans);//数值逆序输出for(int i=ans[0];i>=1;i--){printf("%d",ans[i]);}return 0;
}