美文网首页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