得分40, 是不是因为必须有一个空格的事儿?
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 4000
int isNum(int c)
{
return (c >= '0' && c <= '9') ;
}
void AddLongInteger(int * pcAddend, int len1, int * pcAugend, int len2, int * pcAddResult)
{
int lenSmall = 0;
int lenBig = 0;
int big = 0;
int add = 0;
int aug = 0;
int result = 0;
int carry = 0;
int i = 0;
if(len1>len2)
{
lenSmall=len2;
lenBig = len1;
big = 1;
}
else
{
lenSmall=len1;
lenBig = len2;
big = 2;
}
for(i=0; i<lenBig+1; i++)
{
pcAddResult[i] = '0';
}
for(i=0; i< lenSmall; i++)
{
//printf("before:%c,%c\n", pcAddend[len1 -1 -i], pcAugend[len2 -1 -i] );
add = pcAddend[len1 -1 -i] - '0';
aug = pcAugend[len2 -1 -i] - '0';
result = add + aug;
if(result >9)
{
carry =1;
result = result - 10;
}
else
{
carry = 0;
result = result;
}
//printf("mid:%c,%c\n", pcAddResult[lenBig-i], pcAddResult[lenBig - 1 - i]);
pcAddResult[lenBig-i] += result ;
pcAddResult[lenBig - 1 - i] += carry;
//printf("after:%c,%c\n", pcAddResult[lenBig-i], pcAddResult[lenBig - 1 - i]);
}
for(i=lenSmall; i< lenBig; i++)
{
if(big == 1)
{
result = pcAddend[len1-1-i] - '0';
}
else
{
result = pcAugend[len2-1-i] - '0';
}
carry = 0;
result = result;
pcAddResult[lenBig-i] += result ;
pcAddResult[lenBig - 1 -i] += carry;
}
}
int main()
{
int input[MAX_SIZE];
int pcAddResult[MAX_SIZE];
int i = 0;
int j = 0;
int len1 = 0;
int len2 = 0;
int lenBig = 0;
int num = 0;
int il = 0;
int *p1=0, *p2=0;
for(i=0; i<255 && (input[i]=getchar())>=0 && input[i] != '\n'; i++)
{
//printf("input%d:%d\n", i,input[i]);
}
//printf("i:%d, input[i]:%d\n",i, input[i]);
il = i;
for(i=0;i<100&& input[i]>=0;i ++)
{
//printf("%d,%c\n",i, input[i]);
}
j = 0;
for(i=0; i<il;i++)
{
if(isNum(input[i]))
{
p1 = input +i;
j = i;
break;
}
}
if(i == il) return 0;
for( ;i<il;i++)
{
if(!isNum(input[i]))
{
break;
}
}
if(i == il) return 0;
len1 = i - j;
for( ;i<il;i++)
{
if(isNum(input[i]))
{
p2 = input +i;
j = i;
break;
}
}
if(i == il) return 0;
for( ;i<il;i++)
{
if(!isNum(input[i]))
{
break;
}
}
len2 = i - j;
//printf("len1:%d, len2:%d\n", len1, len2);
lenBig = len1 > len2 ? len1 : len2 ;
if(len1>=128 || len2 >= 128) return 0;
AddLongInteger(p1, len1, p2, len2, pcAddResult);
for(i=0;i<il;i++)
{
if(pcAddResult[i] != '0')
break;
}
for(;i<lenBig+1;i++)
{
printf("%c", (char)pcAddResult[i]);
}
printf("\n");
return 0;
}