以下代码是以自己的思路完成的两个大数相加
#include <string.h>
#include <stdio.h>
#define MAX 400
int add_one[MAX]={0};
int add_two[MAX]={0};
int add_result[MAX]={0};
bool check(int * add_array,int position)
{
int che = 0;
for(int y = position;y < MAX;y++)
if(add_array[y] == 0)
che += 1;
return position + che < MAX ? false : true;
}
int check_position(int * array)
{
int ci = 0;
for(int i = 0; i < MAX;i++)
{
if(check(array,i))
{
ci = i;
break;
}
}
return ci - 1;
}
void input_array(int *array)
{
int cin = 0;
for(int i = 0;i < MAX;i++)
{
scanf("%d",&cin);
if(cin < 0)
break;
else
array[i] = cin;
}
}
void printf_array(int *array)
{
int po = check_position(array);
for(int a = po;a >= 0;a--)
{
printf("%d",array[a]);
}
}
void add(int *add_one,int*add_two,int one,int two)
{
int s = 0;
s = (one < two ? two : one);
for(int k = 0 ;k < s + 1;k++)
{
if(one >= 0 && two >= 0)
{
add_result[k] = add_result[k] + add_one[one--] + add_two[two--];
}else if (one >= 0 && two < 0)
{
add_result[k] = add_result[k] + add_one[one--];
}else if (one < 0 && two >= 0)
{
add_result[k] = add_result[k] + add_two[two--];
}
if(add_result[k] >= 10)
{
add_result[k] -= 10;
add_result[k + 1] += 1;
}
}
}
void main()
{
input_array(add_one);
input_array(add_two);
int one = check_position(add_one);
int two = check_position(add_two);
add(add_one,add_two,one,two);
printf_array(add_result);
}