请问这道C++题有何不妥?

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:25:33
#include<iostream>
using namespace std;
#define MAX 301

int bijiao(char[],char[]);
int main()
{
char s1[MAX],s2[MAX];

while(cin>>s1>>s2){
int a[MAX]={0};
int i=1, j=1, l;
int k1=strlen(s1);
int k2=strlen(s2);
int b=bijiao(s1,s2);
if(b>0)
for(i=k1-1,j=k2-1,l=1;i>=0;i--,j--,l++){
a[l]=s1[i]-'0';
if(j>=0)
a[l]-=s2[j]-'0';
}

else if(b<0)
for(i=k1-1,j=k2-1,l=1;j>=0;i--,j--,l++){
a[l]=s2[j]-'0';
if(i>=0)
a[l]-=s1[i]-'0';
}

for(i=1;i<l;i++)
if(a[i]<0){
a[i+1]--;
a[i]+=10;
}

while(a[i]==0)i--;
if(b<0)
cout<<"-";

if(b==0)
cout<<"0";
else
for(;i>0;i--)
cout<<a[i];

看不太懂你写的,我这个ac了
51002 zxl0714 C Accepted G++ 2007-04-21 13:32:28
#include <iostream>

using namespace std;

int main( )
{
char data[ 2 ][ 300 ];
while ( cin >> data[ 0 ] >> data[ 1 ] )
{
int a[ 300 ], t1 = 0, t2 = 0, i, m = 0, n = 1;
memset( a, 0, sizeof( a ) );
if ( strlen( data[ 1 ] ) > strlen( data[ 0 ] ) )
{
m = 1; n = 0;
cout << '-';
}
else if ( strlen( data[ 1 ] ) == strlen( data[ 0 ] ) )
{
for ( i = 0; i < strlen( data[ 0 ] ); i++ )
if ( data[ 1 ][ i ] > data[ 0 ][ i ] )
{
m = 1; n = 0;
cout << '-';
break;
}
else
if ( data[ 0 ][ i ] > data[ 1 ][ i ] )
break;
}
for ( i = strlen( data[ m ] ) - 1; i >= 0; i-- )
a[ t1++ ] = data[ m ][ i ] - '0';
for ( i = strlen( data[