2020-06-03

分数化小数
习题2-5 分数化小数(decimal)输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10⁶,c≤100。输入包含多组数据,结束标记为a=b=c=0。
样例输入:1 6 4
0 0 0
样例输出:Case 1: 0.1667
思路:看到网上有用printf(“%.*f”,(double)a/b)的,可惜double的精度只有16位。
首先利用循环,把每一位的商存在一个数组中然后判断进位情况(1.第c+1位<4 2.c+1位>4且c位!=9 3. c+1位>4且c位==9 这种情况还要再逆序循环判断前一位。最后,此时数组里存放的是已经处理好的整数位和小数位的数值,只需输出即可一道题折磨了我很久。
在这里插入图片描述昨天晚上开始做这个题,自己想了半个小时没想出来看别人的代码理解了半个小时,把基本算法掌握了。然后抄别人代码却跑不出正确结果,找了一个多小时才发现仅仅因为scanf里面多输了一个%,居然没报错!自以为自己弄会了这个题,可是自己能不能写出来又是一回事,中午又花了一个半小时,又是扣细节,把代码写在纸上,自认为没问题了。晚上写在电脑上一跑却发现有一种情况跑不出来,即0.9999情况,然后苦思冥想两个小时,最后灵机一动,发现还有调试这个功能,边百度边用,一个一个变量的观察,一步一步看着代码执行到哪,最后终于成功找出bug。最终耗时五个半小时,最后跑出来的那一刻我激动的说不出话。

猜你喜欢

转载自blog.csdn.net/brucecui1998/article/details/106533461