天天看点

写一个程序:模拟除法的运算。

除法:模拟1/6;

先求整数部分

先商0余1;整数部位就为0。//程序d=a/b;d用来接收整数部位的值。

小数部分

110/6;程序为余数10/除数;程序就为d=a*10/b;

此时再用a储存余数,重复循环直至所需要的位数。

问题:最后一位需要下一位来判断四舍五入的值。

解决:将最后一位单列出来,对其再次进行一次除数操作,判断是否商是否大于5

#include <stdio.h>

int main()

{

    int a, b, c;

    //版本1

    // while(scanf("%d%d%d",&a,&b,&c)!=EOF)

    // {

    //     double n=(double)a/b;

    //     k++;

    //     printf("Case %d: %.4lf",k,n);

    // }

    //

    //版本2

    scanf("%d%d%d", &a, &b, &c);

    int d;

    d = a / b; //打印整数部分

    printf("%d.", d);

    // for (int i = 0; i < c; i++) //打印小数部分

    // {

    //     d = a * 10 / b;//小数一位

    //     a = a * 10 % b; //取余。

    //     printf("%d", d);

    // }

    //问题;最后一位应该根据后一位进行四舍五入。

//版本3

    for (int i = 1; i <= c; i++) //打印小数部分

    {

        d = a * 10 / b;//小数一位

        a = a * 10 % b; //取余。

        if(i==c)

        {

            a=a*10/b;//计算第c+1位

            if(a>=5)

            {

                d=d+1;//四舍五入

            }

        }

        printf("%d", d);