码迷,mamicode.com
首页 > 其他好文 > 详细

大整数字符串相加

时间:2014-10-24 16:48:48      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:大整数   加法   字符串   

#include <stdio.h>
#include <string.h>

char *reverse(char *str)
{
    int i, j;
    for (i = 0, j = strlen(str) - 1; i < j; ++i, --j) {
        char tmp = str[i];
        str[i] = str[j];
        str[j] = tmp;
    }
    return str;
}

char *strsum(const char *add1, const char *add2, char *result)
{
	int i, j, k;
	int carry = 0;
	for (i = strlen(add1) - 1, j = strlen(add2) - 1, k = 0; 
	     i >= 0 || j >= 0; --i, --j, ++k) 
	{
		int a1, a2, sum;
		a1 = (i >= 0 ? (add1[i] - ‘0‘) : 0);
		a2 = (j >= 0 ? (add2[j] - ‘0‘) : 0);
		sum = carry + a1 + a2;
		result[k] = (char)(0xff & (sum % 10 + ‘0‘));
		carry = sum / 10;
	}
	if (carry) {
		result[k++] = carry + ‘0‘;
	}
	result[k] = ‘\0‘;
	return reverse(result);
}

int main()
{
	char add1[256];
	char add2[256];
	char result[260];
	scanf("%s", add1);
	scanf("%s", add2);
	printf("%s\n", strsum(add1, add2, result));
	return 0;
}


大整数字符串相加

标签:大整数   加法   字符串   

原文地址:http://chhquan.blog.51cto.com/1346841/1567517

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!