题目描述:
输入正整数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
原题为数组存储结果问题
当小数例如 0.639999 时的化简
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
// 以整数为例,忽略小数点前的项
int i;
cin >> i;
int b[i];
for(int j = 0; j < i; ++j){
cin >> b[j];
}
//以上部分正常为求出的结果,存在结果数组b[]中,这里手动模拟
int c; //想要保留到的位数
cin >> c;
for(int j = c; j>=0;j--){
if(b[j] == 10){
b[j] = 0;
b[j-1] += 1;
}
if(b[j] >= 5){
b[j-1] += 1;
}
if(b[j-1]!= 10)
break;
}
for(int j =0; j < c; j++)
cout << b[j];
cout << endl;
return 0;
}
测试结果如下: