题解 | #高精度整数加法#

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

C语言
#include <stdio.h>
#include <string.h>

void reverse(char str[],int length)
{
    int i;
    char s[10001];
    for(i=0;i<length;i++) s[i]=str[length-i-1];
    s[i]='\0';
    for(i=0;i<length;i++) str[i]=s[i];
}

void add_0(char str1[],int length1,char str2[],int length2)
{
    int i;
    if(length1<length2)
    {
        for(i=length1;i<length2;i++) str1[i]='0';
        str1[i]='\0';
    }
    else if(length2<length1)
    {
        for(i=length2;i<length1;i++) str2[i]='0';
        str2[i]='\0';
    }
}

void add(char str1[],char str2[],int length)
{
    int i,jin=0;
    for(i=0;i<length;i++)
    {
        int sum=0;
        sum=str1[i]+str2[i]+jin-2*'0';
        str1[i]=sum%10+'0';
        jin=sum/10;
    }
    if(jin==0) str1[i]='\0';
    else
    {
        str1[i++]=jin+'0';
        str1[i]='\0';
    }
}

int main()
{
    char str1[10001],str2[10001];
    int length1,length2;
    scanf("%s",str1);
    scanf("%s",str2);
    length1=strlen(str1);
    length2=strlen(str2);
    
    reverse(str1, length1);
    reverse(str2,length2);
    
    add_0(str1, length1, str2, length2);
    
    int max=length1;
    if(max<length2) max=length2;
    
    add(str1, str2, max);
    
    int length_new=strlen(str1);
    reverse(str1,length_new);
    puts(str1);
    return 0;
}

大数相加的痛
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务