输入正整数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
#include <stdio.h>
int main(void)
{
int a, b, c, tmp;
int arr[100] = {0};
for (int i = 1; scanf("%d %d %d", &a, &b, &c) == 3 && (a !=0 || b != 0 || c != 0); i++)
{
int integer = a / b;
tmp = a % b;
// 计算小数点后面的小数,并把每一位上的值保存在数组里
for(int n = 0; n <= c; n++)
{
arr[n] = tmp * 10 / b;
tmp = tmp * 10 % b;
}
// 判断第c位是否大于4
if (arr[c] > 4)
{
// 大于4的第c-1位加1
int tmpc = c - 1;
arr[tmpc] = arr[tmpc] +1;
// 判断tmpc位的值是否为10,是10则tmpc位取0,tmpc - 1位加1
for (; tmpc >= 0; tmpc--) {
if (arr[tmpc] == 10){
arr[tmpc] = 0;
// 判断是否数组越界
if (tmpc - 1 < 0) {
integer++;
}
}
}
}
// 打印前面的正整数和小数点
printf("%d.", integer);
for (int count = 0; count < c; count++)
printf("%d", arr[count]);
printf("\n");
}
return 0;
}