您的位置:首页 > 其它

hdu 1002 大整数加法模板

2014-01-01 14:21 344 查看
/* 求两个正整数的加法 AC */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char num1[1000], num2[1000], num[1001];

void bigIntAdd(char * str, char * str1, char * str2) {
int len1, len2, len, c, i;
char tchar;

len1 = strlen(str1);
len2 = strlen(str2);
len = (len1 > len2 ? len1 : len2);

for (i = len + 1; i >= 0; --i)
if (i > len - len1)
str[i] = str1[i - len - 1 + len1];
else
str[i] = '0';

c = 0; //设置进位
for (i = len; i >= 0; --i) {
if (i > len - len2)
tchar = str[i]-'0' + str2[i - len + len2 - 1]-'0' + c; //将数字字符变成数字
else
tchar = str[i]-'0' + c;

if (tchar > 9)
c = 1;
else
c = 0;

if (c == 1)
str[i] = tchar - 10 + '0'; //将数字变成数字字符
else
str[i] = tchar + '0';
}
}

void printBigInt(char * str) {
if (str[0] == '0')
printf("%s", str + 1);
else
printf("%s", str);
}

void main() {
int T, kas;
scanf("%d", &T);
for (kas = 1; kas <= T; kas++) {
scanf("%s%s", num1, num2);

bigIntAdd(num, num1, num2);

printf("Case %d:\n", kas);
printf("%s + %s = ", num1, num2);
printBigInt(num);
putchar('\n');
if (kas != T)
putchar('\n');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: