您的位置:首页 > 其它

大数相加

2016-07-20 18:05 393 查看
# include <stdio.h>
# include <string.h>

# define MAX 1005
int main(void)
{
int n;
int num = 1;
scanf("%d", &n);
while (n--)
{

char ch1[MAX];
char ch2[MAX];
int num1[MAX] = {0};  //两个整型数组元素都要初始化为零
int num2[MAX] = {0};
scanf("%s %s", ch1, ch2);
int len1 = strlen(ch1);
int len2 = strlen(ch2);
int i, j;
for (i = len1 - 1, j = 0; i >= 0; i--) //注意: 字符转数字 要进行颠倒
{
num1[j++] = ch1[i] - '0';
}
for (i = len2 - 1, j = 0; i >= 0; i--)
{
num2[j++] = ch2[i] - '0';
}
/*
//第一种方法

for (i = 0; i < MAX; i++)
{
num1[i] = num1[i] + num2[i];
if (num1[i] > 9)
{
num1[i] -= 10;
num1[i+1]++;
}
}
*/
//第二种方法
int c = 0;
int sum;
int result[MAX] = {0};
for(i = 0; i < MAX; i++)
{
sum = num1[i] + num2[i] + c;
result[i] = sum % 10;
c = sum / 10;
}
printf("Case %d:\n", num);
num++;
printf("%s + %s = ", ch1, ch2);
for (i = MAX - 1; i >= 0; i--)
{
if (result[i] != 0)
{
break;
}
}
for (; i >= 0; i--)
{
printf("%d", result[i]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  大数相加