C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位.a,b
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 18:47:52
C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位.a,b
C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位.a,b
C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位.a,b
#include <stdio.h>
//最大的精度
#define MAX_LENGTH 120
//计算商
int GetFactor(int a, int b)
{
\x09return a / b;
}
//计算余数
int GetRemainder(int a, int b)
{
\x09return a - (a/b * b);
}
//是否整除
bool IsAliquot(int a, int b)
{
\x09bool ret = false;
\x09if(a%b == 0)
\x09{
\x09\x09ret = true;
\x09}
\x09return ret;
}
//模拟竖式计算
void Division(int a, int b, int precision, int ans[MAX_LENGTH])
{
\x09if(precision > MAX_LENGTH)
\x09{
\x09\x09return;
\x09}
\x09int i=0;
\x09for(i=0; i<MAX_LENGTH; i++)
\x09{
\x09\x09ans[i] = 0;
\x09}
\x09
\x09int calA = a, calB = b;
\x09ans[0] = GetFactor(calA, calB);
\x09
\x09//模拟竖式计算
\x09for(i=1; i<=precision; i++)
\x09{
\x09\x09if(IsAliquot(calA, calB) == true)//已经整除,不需要再继续进行下去
\x09\x09{
\x09\x09\x09break;
\x09\x09}
\x09\x09calA = GetRemainder(calA, calB);
\x09\x09calA *= 10;
\x09\x09ans[i] = GetFactor(calA, calB);
\x09}
}
void main()
{
\x09int ans[MAX_LENGTH] = {0};
\x09int a = 20;
\x09int b = 3;
\x09int c = 20;
\x09if (c > MAX_LENGTH)
\x09{
\x09\x09return;
\x09}
\x09//计算
\x09Division(a, b, c, ans);
\x09
\x09printf("%d / %d , the answer is:(precision:%d)\n",a, b, c);
\x09printf("%d . ",ans[0]);
\x09
\x09int i = 0;
\x09for(i=1; i<=c ; i++)
\x09{
\x09\x09printf("%d",ans[i]);
\x09\x09if(i%10==0)
\x09\x09{
\x09\x09\x09printf(" ");
\x09\x09}
\x09}
\x09printf("\n");
\x09printf("Calculation finished!\n");
}