美文网首页C语言
用C语言求两个超大整数的和

用C语言求两个超大整数的和

作者: 花开终落_196a | 来源:发表于2018-10-29 14:53 被阅读0次

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

}

这段代码有很大的完善空间,欢迎大家留言批评讨论

这是加法的计算代码,大家可以尝试写一写减法的相关代码;有能力的可以写写乘法和除法的(确实比较难);

相关文章

网友评论

    本文标题:用C语言求两个超大整数的和

    本文链接:https://www.haomeiwen.com/subject/eepbtqtx.html