69,373
社区成员
发帖
与我相关
我的任务
分享
void Add(char *str1, char *str2, char *str3)
{// str3 = str1 + str2;
int i, j, i1, i2, tmp, carry;
int len1 = strlen(str1), len2 = strlen(str2);
char ch;
i1 = len1-1; i2 = len2-1;
j = carry = 0;
for( ; i1 >= 0 && i2 >= 0; ++j, --i1, --i2 ){
tmp = str1[i1]-'0'+str2[i2]-'0'+carry;
carry = tmp/10;
str3[j] = tmp%10+'0';
}
while( i1 >= 0 ){
tmp = str1[i1--]-'0'+carry;
carry = tmp/10;
str3[j++] = tmp%10+'0';
}
while( i2 >= 0 ){
tmp = str2[i2--]-'0'+carry;
carry = tmp/10;
str3[j++] = tmp%10+'0';
}
if( carry ) str3[j++] = carry+'0';
str3[j] = '\0';
}
for( i=0, --j; i < j; ++i, --j ){
ch = str3[i]; str3[i] = str3[j]; str3[j] = ch;
}
void Minus(char *str1, char *str2, char *str3)
{// str3 = str1-str2 (str1 > str2)
int i, j, i1, i2, tmp, carry;
int len1 = strlen(str1), len2 = strlen(str2);
char ch;
i1 = len1-1; i2 = len2-1;
j = carry = 0;
while( i2 >= 0 ){
tmp = str1[i1]-str2[i2]-carry;
if( tmp < 0 ) {
str3[j] = tmp+10+'0'; carry = 1;
}
else {
str3[j] = tmp+'0'; carry = 0;
}
--i1; --i2; ++j;
}
while( i1 >= 0 ){
tmp = str1[i1]-'0'-carry;
if( tmp < 0 ) {
str3[j] = tmp+10+'0'; carry = 1;
}
else{
str3[j] = tmp+'0'; carry = 0;
}
--i1; ++j;
}
--j;
while( str3[j] == '0' && j > 0 ) --j;
str3[++j] = '\0';
for( i=0, --j; i < j; ++i, --j ){
ch = str3[i]; str3[i] = str3[j]; str3[j] = ch;
}
}