核心思想用求模的方法得到最后一位,进行相加并判断是否大于等于10,偌大于等于10,要在下一次相加时额外还要加一
详细代码如下:
#include<stdio.h>
int main()
{
//建立无符号数组
unsigned int a[1001], b[1001];
int n, m, x = 0;
int i = 0, k = 0;
int cnt[1001] = { 0 };
//输入第一组要相加的数字
scanf("%d %d", &a[i], &b[i]);
//判断是否两个同时为零
while (a[i] != 0 && b[i] != 0)
{
//x表示进位的的数字
x = 0;
while (a[i] || b[i])
{
//求模,求得最后一位
n = a[i] % 10;
m = b[i] % 10;
//除10,抹掉最后一位,同时更新a[i],b[i]
a[i] = a[i] / 10;
b[i] = b[i] / 10;
//如果相加大于10,x变为1
//如果一次不满足条件就,x变为0
if (m + n + x >= 10)
{
cnt[i]++;
x = 1;
}
else
x = 0;
}
i++;
//更新i
scanf("%d %d", &a[i], &b[i]);
}
//输出第k组进位了几次
for (k = 0; k < i; k++)
printf("%d carry operation(s)\n", cnt[k]);
return 0;
}