问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大整数加法 C语言 求代码 要求如下

发布网友 发布时间:2022-04-28 12:08

我来回答

1个回答

热心网友 时间:2023-10-08 22:53

#include<stdio.h>
#include<string.h>

void reverse( char *s )        /*将字符串逆置*/
{
    int length;
    int i = 0;
    char temp;
    length = strlen( s );
    while( i < length - i - 1 )
    {
        temp = s[i];
        s[i] = s[length - i - 1];
        s[length - i - 1] = temp;
        i++;
    }
}

void AddBigNum( char* s1, char* s2, char* result )
{
    int len1 = strlen( s1 );
    int len2 = strlen( s2 );
    int acc = 0, temp, i;        /*acc为进位标记*/
    if( s1 == NULL || s2 == NULL || result == NULL )
    {
        return;
    }
    reverse( s1 );
    reverse( s2 );
    for( i = 0; i < len1 && i < len2; i++ )
    {
        temp = s1[i] - '0' + s2[i] - '0' + acc;        /*计算每位的实际和*/
        result[i] = temp % 10 + '0';        /*通过求余数来确定每位的最终值*/
        if( temp >= 10 )        /*通过这个if..else..条件来判断是否有进位,并设置进位值*/
            acc = 1;
        else
            acc = 0;
    }
    if( i < len1 )        /*两个加数位数不同*/
    {
        for( ; i < len1; i++ )
        {
            temp = s1[i] - '0' + acc;        /*依旧要考虑进位,比如9999 + 1的情况*/
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }
    if( i < len2 )
    {
        for( ; i < len2; i++ )
        {
            temp = s2[i] - '0' + acc;
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }

    if( acc == 1 )        /*考虑如:123 + 911 = 1034的情况,如果不增加这个条件会得到结果为034,进位被舍弃*/

        result[i++] = '1';

    result[i] = '\0';
    reverse( result );
}

main()
{
    char s1[405];
    char s2[405];
    char result[405];
    int N;
    scanf("%d",&N);
    while(N--)
    {
        scanf("%s%s",s1,s2);
         AddBigNum( s1, s2, result );
         printf( "%s\n", result );
    }
    return 0;
}

运行结果如图:

热心网友 时间:2023-10-08 22:53

#include<stdio.h>
#include<string.h>

void reverse( char *s )        /*将字符串逆置*/
{
    int length;
    int i = 0;
    char temp;
    length = strlen( s );
    while( i < length - i - 1 )
    {
        temp = s[i];
        s[i] = s[length - i - 1];
        s[length - i - 1] = temp;
        i++;
    }
}

void AddBigNum( char* s1, char* s2, char* result )
{
    int len1 = strlen( s1 );
    int len2 = strlen( s2 );
    int acc = 0, temp, i;        /*acc为进位标记*/
    if( s1 == NULL || s2 == NULL || result == NULL )
    {
        return;
    }
    reverse( s1 );
    reverse( s2 );
    for( i = 0; i < len1 && i < len2; i++ )
    {
        temp = s1[i] - '0' + s2[i] - '0' + acc;        /*计算每位的实际和*/
        result[i] = temp % 10 + '0';        /*通过求余数来确定每位的最终值*/
        if( temp >= 10 )        /*通过这个if..else..条件来判断是否有进位,并设置进位值*/
            acc = 1;
        else
            acc = 0;
    }
    if( i < len1 )        /*两个加数位数不同*/
    {
        for( ; i < len1; i++ )
        {
            temp = s1[i] - '0' + acc;        /*依旧要考虑进位,比如9999 + 1的情况*/
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }
    if( i < len2 )
    {
        for( ; i < len2; i++ )
        {
            temp = s2[i] - '0' + acc;
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }

    if( acc == 1 )        /*考虑如:123 + 911 = 1034的情况,如果不增加这个条件会得到结果为034,进位被舍弃*/

        result[i++] = '1';

    result[i] = '\0';
    reverse( result );
}

main()
{
    char s1[405];
    char s2[405];
    char result[405];
    int N;
    scanf("%d",&N);
    while(N--)
    {
        scanf("%s%s",s1,s2);
         AddBigNum( s1, s2, result );
         printf( "%s\n", result );
    }
    return 0;
}

运行结果如图:

热心网友 时间:2023-10-08 22:53

#include<stdio.h>
#include<string.h>

void reverse( char *s )        /*将字符串逆置*/
{
    int length;
    int i = 0;
    char temp;
    length = strlen( s );
    while( i < length - i - 1 )
    {
        temp = s[i];
        s[i] = s[length - i - 1];
        s[length - i - 1] = temp;
        i++;
    }
}

void AddBigNum( char* s1, char* s2, char* result )
{
    int len1 = strlen( s1 );
    int len2 = strlen( s2 );
    int acc = 0, temp, i;        /*acc为进位标记*/
    if( s1 == NULL || s2 == NULL || result == NULL )
    {
        return;
    }
    reverse( s1 );
    reverse( s2 );
    for( i = 0; i < len1 && i < len2; i++ )
    {
        temp = s1[i] - '0' + s2[i] - '0' + acc;        /*计算每位的实际和*/
        result[i] = temp % 10 + '0';        /*通过求余数来确定每位的最终值*/
        if( temp >= 10 )        /*通过这个if..else..条件来判断是否有进位,并设置进位值*/
            acc = 1;
        else
            acc = 0;
    }
    if( i < len1 )        /*两个加数位数不同*/
    {
        for( ; i < len1; i++ )
        {
            temp = s1[i] - '0' + acc;        /*依旧要考虑进位,比如9999 + 1的情况*/
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }
    if( i < len2 )
    {
        for( ; i < len2; i++ )
        {
            temp = s2[i] - '0' + acc;
            result[i] = temp % 10 + '0';
            if( temp >= 10 )
                acc = 1;
            else
                acc = 0;
        }
    }

    if( acc == 1 )        /*考虑如:123 + 911 = 1034的情况,如果不增加这个条件会得到结果为034,进位被舍弃*/

        result[i++] = '1';

    result[i] = '\0';
    reverse( result );
}

main()
{
    char s1[405];
    char s2[405];
    char result[405];
    int N;
    scanf("%d",&N);
    while(N--)
    {
        scanf("%s%s",s1,s2);
         AddBigNum( s1, s2, result );
         printf( "%s\n", result );
    }
    return 0;
}

运行结果如图:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
月经不尽褐色的是怎么回事 月经前后有褐色分泌物是什么原因 二十四节气的重要意义24节气在生活中的作用 你来我往,猜一个数字? 姓谭女孩起什么名字最优雅 男孩姓谭的好名字 黄家驹在beyond的地位 黄家驹是Beyond的主唱吗? 老板对员工的新年微信 每次感冒和一些小毛病,我都是选择运动出身汗,让它自然好,请问这种方 ... c语言加法运算,要详细步骤 求C语言简单的加法求和程序代码~~ 1-100C语言加法程序 求一个简单的C语言加法程序代码!很急啊! 求一个简单的C语言加法运算代码 要求 可以输入&#39;+&#39; 谢谢了 加法c语言源代码 C语言怎么进行加法计算?给个简单的程序来 用C语言写一个加法运算的代码怎么写? 简单的C语言加法程序代码都有什么? 乔丹告“乔丹”一审判决,最终判决结果如何? aj1黑红脚趾商标uk部分什么样子的,我的uk下面的数字为什么是5 .5这样的,分的很开 我的aj1的商标是真的吗 这种内商标有吗aj1? 我的aj1黑红脚趾的商标是真的吗? aj1叛逆得物上要中签吗 aj1鞋舌上的标有这样没有商标圈r的吗 耐克aj1里面的商标穿久了就掉没了,怎么回事,假货吗 aj1矮帮闪电配色皇家蓝鞋舌处商标什么颜色 我已注册了百家号,但是实名认证不会? 为什么有些aj1没有tm 怎样用c语言编大整数加法的程序 用C语言怎样编小学的加减乘除(代码) 急!!!C语言大数加法 用C语言编写程序(两个矩阵相加) 求两个数相加的c语言程序 任意长的整数加法 用c语言编写的程序 唐三藏取经的歇后语 关于西天取经 的歇后语 唐僧西天取经,打一个歇后语 关于西游记唐僧的歇后语 西游记唐僧的歇后语 西游记歇后语唐僧取经 西游记歇后语…… “白骨精给唐僧送饭” 歇后语是什么 含有唐僧的经典歇后语 给妈妈买了新的手机怎么充电对电池比较耐用点啊? 腰膝酸痛怎么回事? 腰酸胀,是怎么回事? 腰痛腿酸怎么回事啊 老是腰酸腰胀怎么办? 腰部很容易酸胀痛怎么回事?