C语言 输入正整数a,b,c,输出a/b的小数形式,保留小数点后c位。a,b<=1000000,c<=100

 我来答
朝朝战士邦
2014-05-08 · 超过27用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:66.2万
展开全部
#include <stdio.h>

//最大的精度
#define MAX_LENGTH 120

//计算商
int GetFactor(int a, int b)
{
return a / b;
}

//计算余数
int GetRemainder(int a, int b)
{
return a - (a/b * b);
}

//是否整除
bool IsAliquot(int a, int b)
{
bool ret = false;
if(a%b == 0)
{
ret = true;
}
return ret;
}

//模拟竖式计算
void Division(int a, int b, int precision, int ans[MAX_LENGTH])
{
if(precision > MAX_LENGTH)
{
return;
}
int i=0;
for(i=0; i<MAX_LENGTH; i++)
{
ans[i] = 0;
}

int calA = a, calB = b;
ans[0] = GetFactor(calA, calB);

//模拟竖式计算
for(i=1; i<=precision; i++)
{
if(IsAliquot(calA, calB) == true)//已经整除,不需要再继续进行下去
{
break;
}
calA = GetRemainder(calA, calB);
calA *= 10;
ans[i] = GetFactor(calA, calB);
}
}

void main()
{
int ans[MAX_LENGTH] = {0};
int a = 20;
int b = 3;
int c = 20;

if (c > MAX_LENGTH)
{
return;
}

//计算
Division(a, b, c, ans);

printf("%d / %d , the answer is:(precision:%d)\n",a, b, c);
printf("%d . ",ans[0]);

int i = 0;
for(i=1; i<=c ; i++)
{
printf("%d",ans[i]);
if(i%10==0)
{
printf("  ");
}
}
printf("\n");

printf("Calculation finished!\n");
}
高店村四组
2014-05-08 · TA获得超过243个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:283万
展开全部
这一题难就难在原理上,其实程序并不难,举个例子吧:
a>b的情况,如4/3,那么,整数部分直接可以用a/b输出了,然后输出小数点。小数部分的话,你想想,是不是可以这么算,(int)((4/3-(int)4/3)*10)就是×10取整,然后取减去整数部分后的分数,为a*10-(int)(a*10/b)*b。至于怎么来的,自己好好琢磨吧。
#include "stdio.h"

void fuc(int a,int b,int c)
{
for (int i = 1;i<=c+1;i++)
{
if (i == 1)
{
printf("\n%d.",a/b);
if (a>=b)
{
a = a-a/b*b;
}
}
else
{
printf("%d",a*10/b);
a = a*10-a*10/b*b;
}
}
}

void main()
{
int a,b,c;
printf("请输入a,b,c\n");
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
fuc(a,b,c);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2017-03-03 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1086万
展开全部

#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*lf\n",c,1.0*a/b);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e254f91
2017-08-14
知道答主
回答量:13
采纳率:0%
帮助的人:5.3万
展开全部

cout<<fixed<<setprecision(c)<<a*1.0/b<<endl;

也行


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式