用整數型態去做還比較簡單...
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[11], b[11];
int i, j, n1[10], n2[10], tmp, carry, count;
while (scanf("%s%s", a, b) == 2 &&
(a[0] != '0' || a[1] != '\0' || b[0] != '0' || b[1] != '\0'))
{
for (i = 0, j = strlen(a)-1; j >= 0; i++, j--)
n1[i] = a[j] - '0';
for (; i < 10; i++)
n1[i] = 0;
for (i = 0, j = strlen(b)-1; j >= 0; i++, j--)
n2[i] = b[j] - '0';
for (; i < 10; i++)
n2[i] = 0;
carry = count = 0;
for (i = 0; i < 10; i++)
{
tmp = n1[i] + n2[i] + carry;
carry = tmp/10;
if (tmp >= 10)
count++;
}
if (count == 0)
printf("No carry operation.\n");
else if (count == 1)
printf("1 carry operation.\n");
else
printf("%d carry operations.\n", count);
}
return 0;
}
沒有留言:
張貼留言