题目
思路
- 录入数据
由于给出的A很大,所以使用一个数组来存储A,然后依次计算每一位的商和余数 - 计算
(1)使用数组res[]来存放每一位的商
(2)使用rem来表示每一位的余数
(3)显然,第i位作为被除数时,其值为第i-1位的余数*10+第i位的值,用该值除以除数b,即得到第i位的商和余数,依次类推即可;第一位的前置余数为0,最后一位的余数即为最终的余数; - 打印
由于结果数组res中前面数位可能是0,所以先去除其中的0,再依次打印商的每一位即可;
若商全是0,则需要手动输出一个0来表示商;
#include<stdio.h>
int main(void)
{
char a[1001], res[1001];
int b, i, j, rem = 0;
scanf("%s%d", a, &b);
for (i = 0; a[i] != '\0'; i++)
{
rem = rem * 10 + (a[i] - '0');
res[i] = rem / b;
rem = rem % b;
}
for (j = 0; j < i && res[j] == 0; j++);
if (j == i)
printf("%d %d", 0, rem);
else
{
for (; j < i; j++)
printf("%d", res[j]);
printf(" %d", rem);
}
return 0;
}