这个程序里先乘10再取余是什么意思?qwq

这个是同学问的的一个题目,我俩研究半天没看懂,但验证发现是对的,想问一下for循环里的式子是怎么得出来的?

img

img

这不是小学除法吗
你要手算a/b精确到7位小数怎么算
因为a<b,不够除,所以整数位是0
那么要算第一个小数位之前,你需要先把a乘以10,让它够除
然后商存当temp里,余数存回a里,这个商就是小数点后第一位
如果余数是0,就除尽了,除不尽就重复上面的步骤,再乘以10,再求商和余数,如此反复

 
#include <stdio.h>
int main()
{
    int a,b,n,c;
    scanf("%d %d %d", &a, &b, &n);
    if (a > b)
        a = a % b;
    for (int i = 1; i <= n; i++)
    {
        c = 10 * a / b;
        a = 10 * a - b * c;
    }
    printf("%d\n", c);
    return 0;
}