很多细节,,,,,,,
#include <stdio.h>
#include <string.h>
void Sum(char a[], char b[], int c[], int lena, int lenb);
int main(void)
{
char a[1000] = { 0 }, b[1000] = { 0 };
int c[1001] = { 0 };
int number, i, j, lena, lenb, max;
scanf("%d", &number);
for (i = 0; i < number; i++)
{
/************初始化***************/
char a[1000] = { 0 };
char b[1000] = { 0 };
int c[1001] = { 0 };
/*******************************/
/***********Input**************/
scanf("%s", a);
scanf("%s", b);
lena = strlen(a);
lenb = strlen(b);
/******************************/
/*************求和***********/
Sum(a, b, c, lena, lenb);
max = lena > lenb ? lena : lenb;
/**************************/
/*************Output*********/
printf("Case %d:\n", i + 1);
printf("%s + %s = ", a, b);
if (c[0])
j = 0;
else
j = 1;
for (j; j <= max; j++)
printf("%d", c[j]);
if (i != number - 1)
printf("\n\n");
else
printf("\n");
/****************************/
}
return 0;
}
/*将a和b数组中的大数相加,将结果存储到c中去,返回相加后的长度lenc*/
void Sum(char a[], char b[], int c[], int lena, int lenb)
{
int temp;
int max;
max = lena > lenb ? lena : lenb;
while (lena > 0 && lenb > 0)
{
temp = a[--lena] + b[--lenb] +c[max] - 48 -48;
//如果产生进位
if (temp/10)
{
c[max] = temp%10;
c[max-1] = temp/10;
}
//不产生进位
else
{
c[max] = temp;
}
max--;
}
/***********a比b短*******************/
while(lenb>0)
{
c[max] += b[--lenb]-48;
if (c[max]/10)
{
c[max-1] = c[max]/10;
c[max] %= 10;
}
max--;
}
/*********************b比a短********/
while(lena>0)
{
c[max] += a[--lena] -48;
if (c[max]/10)
{
c[max-1] = c[max]/10;
c[max] %= 10;
}
max--;
}
}
网友评论