69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
enum {MAXSIZE = 256 + 2, RADIX = 10};
/* ans = first + second */
char *big_num_add(char *ans, char *first, char *second)
{
int i = 0; /* ans 的索引 */
int carry = 0; /* 进位,初始为0 */
char *strA = strrev(first);
char *strB = strrev(second);
while (*strA || *strB)
{
carry += (*strA++ &0xf) + (*strB++ & 0xf);
ans[i++] = carry % RADIX + '0';
carry /= RADIX;
}
if (carry)
ans[i++] = carry + '0';
ans[i] = 0;
strrev(first);
strrev(second);
return strrev(ans);
}
#include <stdio.h>
#include <string.h>
enum {MAXSIZE = 256 + 2, RADIX = 10};
/* ans = first + second */
char *big_num_add(char *ans, char *first, char *second)
{
int i = 0; /* ans 的索引 */
int carry = 0; /* 进位, 初始为0 */
char *strA = strrev(first);
char *strB = strrev(second);
do
{
carry += (*strA &0xf) + (*strB & 0xf);
ans[i++] = carry % RADIX + '0';
carry /= RADIX;
} while (*(++strA) && *(++strB)); /*指针先自增,后判断*/
while(*strA){ /*如果strA里还有字符*/
ans[i++] = *strA++;
}
while(*strB) {
ans[i++] = *strB++;
}
ans[i] = '\0'; /*添加结束符*/
strrev(first);
strrev(second);
return strrev(ans);
}
int main()
{
char first[255] = "123";
char second[255] = "123232323";
char ans[256];
big_num_add(ans, first, second);
printf("ans=%s\n", ans);
return 0;
}