Advertisement

算法竞赛入门经典·刘汝佳:习题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

分析:

  1. 输入内容包含多个测试用例
  2. c≤100意味着小数位数可能超过常规数据类型的精度范围,而double类型仅能保证约16位的精度,因此常规的小数表示方式无法满足要求
  3. 需要将结果保留至小数点后c位
  4. 当输入中的a、b、c同时为零时,表示输入结束

题解:

  1. 处理多组数据时需特别注意输入方式的设计(确保在读取一系列数据时能够准确处理每组数据。例如本题中每次只需读取三个变量a、b、c)
  2. 将整数部分与小数部分分别进行计算可以有效解决精度不足的问题
  3. 实践表明,%.cf的格式化写法无法正确实现所需功能。可采用类似于小学除法的手动计算方法——即通过乘以十并取余的方式逐位计算小数部分(这种看似复杂的方法实际上就是模拟人工进行除法运算的过程,在得到余数后继续补零进行计算)
  4. 在循环条件中应设定限制条件以确保a、b、c均不等于零

`

全部评论 (0)

还没有任何评论哟~