算法竞赛入门经典·刘汝佳:习题2-5 分数化小数(C)
发布时间
阅读量:
阅读量
题目
题意 :输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。其中a,b ≤ 106, c≤100。输入包含多组数据,结束标记为a=b=c=0。
测试数据:
样例输入:
1 6 4
0 0 0
样例输出:
Case 1: 0.1667
分析:
- 输入内容包含多个测试用例
- c≤100意味着小数位数可能超过常规数据类型的精度范围,而double类型仅能保证约16位的精度,因此常规的小数表示方式无法满足要求
- 需要将结果保留至小数点后c位
- 当输入中的a、b、c同时为零时,表示输入结束
题解:
- 处理多组数据时需特别注意输入方式的设计(确保在读取一系列数据时能够准确处理每组数据。例如本题中每次只需读取三个变量a、b、c)
- 将整数部分与小数部分分别进行计算可以有效解决精度不足的问题
- 实践表明,%.cf的格式化写法无法正确实现所需功能。可采用类似于小学除法的手动计算方法——即通过乘以十并取余的方式逐位计算小数部分(这种看似复杂的方法实际上就是模拟人工进行除法运算的过程,在得到余数后继续补零进行计算)
- 在循环条件中应设定限制条件以确保a、b、c均不等于零
`
全部评论 (0)
还没有任何评论哟~
