自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/2301_77580973/article/details/144406693

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!