用C语言求两个超大整数的和
在生活中,我们经常需要计算非常大的数,但是任何一种计算器都有计算范围,一旦超过计算范围就会有精度的损失。或许有同学认为我们可以通过程序来解决,比如对于C语言来说,我们定义一个long long型的数据变量,这样就可以计算两个超大整数的和了。但是我们都知道,long long型表示的最大范围为9223372036854775807,最小值为-9223372036854775808,这才是20多位而已,假如我们需要计算两个均为两百位数的超大整型数的和,那我们该如何解决呢?
答案其实很简单,其实也是用程序来解决,只不过此时就不能简单定义两个变量计算结果了,小编今天碰到一道类似题,特意在此分享解决此问题的代码:
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[201],arr2[201];
printf("请输入加数:");
scanf("%s",&arr1);
printf("请输入另一个加数:");
scanf("%s",&arr2);
int len1=strlen(arr1);
int len2=strlen(arr2);
int i;
int a[201]={0};int b[201]={0};int sum[202]={0};
//转换
int j=0;
for(i=len1-1;i>=0;i--)
{
a[j++]=arr1[i]-'0';
}
j=0;
for(i=len2-1;i>=0;i--)
{
b[j++]=arr2[i]-'0';
}
//求和
int max=(len1>len2)?len1:len2;
for(i=0;i<max;i++)
{
sum[i]=a[i]+b[i];
}
//进位操作处理
for(i=0;i<max;i++)
{
if(sum[i]>=10)
{
sum[i+1]++;
sum[i]-=10;
}
}
//输出结果
printf("计算结果为:");
for(i=max-1;i>=0;i--)
{
printf("%d",sum[i]);
}
return 0;
}
这段代码有很大的完善空间,欢迎大家留言批评讨论
这是加法的计算代码,大家可以尝试写一写减法的相关代码;有能力的可以写写乘法和除法的(确实比较难);
网友评论