#include
#include
int Maxlen ;
char a[110] , b[110] ;
int an1[110] , an2[110] ;
int Addition(int maxlen , int an1[] , int an2[] );
int main()
{
int i , j ;
scanf("%s" , a) ;
scanf("%s" , b) ;
memset( an1 , 0 , sizeof(an1) ) ;
memset( an2 , 0 , sizeof(an2) ) ;
int len1 = strlen(a) ;
int len2 = strlen(b) ;
if(len1 > len2 )
Maxlen = len1 ;
Maxlen = len2 ;
for(j = 0, i = strlen(a)- 1 ; i >= 0 ; i --)
an1[j++] = a[i] - '0';
for(j = 0 , i = len2 - 1 ; i >= 0 ; i --)
an2[j++] = b[i] - '0';
Addition ( Maxlen , an1 , an2 ) ;
for( i = 100 ; i >= 0; i -- )
{
if( an1[i] != 0 )break;
}
for(;i>=0;i--)
printf("%d" ,an1[i]) ;
printf("\n") ;
}
int Addition( int maxlen , int an1[] , int an2[] )//大数相加函数
{
for( int i = 0 ; i < maxlen ; i++ )
{
an1[i] += an2[i] ;
if( an1[i] >= 10 )
{
an1[i] -= 10 ;
an1[i + 1] ++ ;
}
}
return 0;
}
#include
#include
#define N 200
void main()
{
char s1[N],s2[N];
int a[N]={0},b[N]={0},l1,l2,c,k,i;
puts("请输入两个较大的数字(Note:输完一个按一次回车):");
gets(s1);
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
if(l1
for(i=0;i
for(k=c,i=0;i
printf("\n");
for(i=c;i>=0;i--)
{
a[i]+=b[i];
if(a[i]>=10)
{
a[i]-=10;
a[i-1]++;
}
}
printf("此两数相加之和为:");
if(a[0]!=0)
{
for(i=0;i<=c;i++)
printf("%d",a[i]);
}
else
{
for(i=1;i<=c;i++)
printf("%d",a[i]);
}
printf("\n");
getchar();
}
用数组,从最后一个加开始, 锋十进一
什么大数相加,说具体点呢,我C语言非常好的。