2 versoon versoon 于 2016.02.17 13:01 提问

简单编程题:分数化小数,怎么用变量作为输出的小数位?

题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100.
输入包含多组数据,结束标记为a=b=c=0。
样例输入:
1 6 4
0 0 0
样例输出:
Case 1:0.1667
我的代码如下,还没有完善,如果有其他不足也恳请指教!谢谢
#include
int main()
{
int a,b,c,kase=0;
double res;
while(scanf("%d%d%d",&a,&b,&c)&&(a!=0&&b!=0&&c!=0))
{
res=a/b;
printf("Case %d: ",++kase,c,res);
}
return 0;

}

3个回答

u011073953
u011073953   2016.02.17 17:20
已采纳

http://blog.csdn.net/nanashiro/article/details/8284922
这个源码试试吧。他没保存小数点后面的数字而是直接输出了。
你想保存。那就多一步,存到char数组里就行。

u011073953
u011073953   2016.02.17 14:02

100位小数啊。你用double保存绝对不行的。double不可能精确到小数点后100位(你想想,小数点后100位,如果要精确,至少要10^100这么大数据量,这个量,double绝对达不到的,一共才4位(可能是8位不记得了))
建议用char c[101] 这样保存。模拟人工算法来计算。参考高精度除法算法。应该可以的。

u011073953
u011073953 回复versoon: 这个好说啊,char数组以\0结尾。你在计算时候,比如需要50位,那计算到51位时候就直接退出,然后在数组末尾放一个\0就行了。
接近 2 年之前 回复
versoon
versoon 那么输出部分以变量c为输出长度怎么表示呢?
接近 2 年之前 回复
u011073953
u011073953 补充下,char c[100]可能都不够。万一是类似10000000/3这样的。小数点前还很多。反正数组你开大点 不怕内存不够。
接近 2 年之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.17 22:27

这个可以啊!没问题,只要你定义了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!