只有第五个测试有问题,
350204156568812004512541458715942878921069349854678
5120132301230048014584016540526804565814706519846494321001345794503242112976563432120
输出变成这个样子了
350204156568812004512541458715950240264602460096029168033081053609131629413039692988642002691589006484225953126864240
我打断点去看的时候,数据都很正常,一个个输出时也很正常,但是直接编译运行就会变成这个样子 下面是我的代码
#include <bits/stdc++.h>
using namespace std;
char *st1, *st2;
int arr[ 501 ];
int brr[ 501 ];
int main() {
st1 = ( char * ) malloc( sizeof( char ) );
st2 = ( char * ) malloc( sizeof( char ) );
scanf( "%s %s", st1, st2 );
int len1;
int len2;
if ( ( ( strlen( st1 ) == strlen( st2 ) ) && strcmp( st1, st2 ) ) ||
( strlen( st1 ) > strlen( st2 ) ) ) {
len1 = strlen( st1 );
len2 = strlen( st2 );
for ( int i = 0; i < len1; i++ ) {
arr[ len1 - i - 1 ] = st1[ i ] - '0';
}
for ( int i = 0; i < len2; i++ ) {
brr[ len2 - i - 1 ] = st2[ i ] - '0';
}
} else {
len2 = strlen( st1 );
len1 = strlen( st2 );
for ( int i = 0; i < len2; i++ ) {
brr[ len2 - i - 1 ] = st1[ i ] - '0';
}
for ( int i = 0; i < len1; i++ ) {
arr[ len1 - i - 1 ] = st2[ i ] - '0';
}
}
int temp = 0;
int in = 0;
for ( int i = 0; i <= len1; i++ ) {
temp = arr[ i ] + brr[ i ] + in;
arr[ i ] = temp % 10;
if ( temp > 9 ) {
in = temp / 10;
} else {
in = 0;
}
}
if ( arr[ len1 ] > 0 )
printf( "%d", arr[ len1 ] );
for ( int i = len1 - 1; i >= 0; i-- ) {
printf( "%d", arr[ i ] );
}
}