首页 > 编程知识 正文

C语言 分数化小数,分数化小数100道

时间:2023-05-04 15:24:45 阅读:224653 作者:4504

输入正整数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 <stdio.h>int main(){ int a, b, c, ct = 1; while(3 == scanf("%d%d%d", &a, &b, &c)) { if(0 == a && 0 == b && 0 == c) break; int integer = a / b; // 获得整数部分 printf("Case %d: %d.", ct++, integer); a %= b; // 获得余数 int i = 1; // 进行c-1次模数学拟除法求出小数点后c-1位,因为要四舍五入,所以最后一位单独处理 while(i++ < c) { a *= 10; printf("%d", a / b); a %= b; } a *= 10; // 判断最后一位的下一位是否大于5,进行四舍五入 printf("%dn", ((a % b) * 10 / b > 5) ? (a / b + 1) : (a / b)); } return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。