急求!C语言实现a+b,有条件,0<=a,b<=10^100

发布网友 发布时间:2024-09-27 09:06

我来回答

2个回答

热心网友 时间:2天前

#include<stdio.h>
#include<string.h>
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;
}追问有简单一些的吗?这个我有点没看懂

追答由于十大数相加。因为a b可能是1000000000000000000.。。。。等100位数用int long int 都不能保存 只能用数组来保存a 和 b 然后对应位相加 没有更简单的了 简单的实现不了要求

热心网友 时间:2天前

C++代码,好久不写这种了
自己改下吧
int a=0;
int b=0;
cin>>a;
cin>>b;
if(a=>0 && b<=10^100)
{
a=a+b

}
else
{
return;

}
cout<<a;追问有C语言的吗?C++我不会

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com