c语言大数相加,简单点的~

2025-01-05 03:08:33
推荐回答(4个)
回答1:

#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;
}

回答2:

#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 else k=l1;c=k;
for(i=0;i a[k]=s1[l1-1-i]-'0';
for(k=c,i=0;i b[k]=s2[l2-1-i]-'0';
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();
}

回答3:

用数组,从最后一个加开始, 锋十进一

回答4:

什么大数相加,说具体点呢,我C语言非常好的。