题解 | #高精度整数加法#
高精度整数加法
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;
}
大数相加的痛

