今天开始重新刷紫书,算是对自己的一个交代,总觉得这样心里会很踏实,也没啥,或者不就求个踏实吗,so,开始了,先来个最简单的模拟,分数化小数,想来我还是有成长的,一年前写这个题还不会写呢,哈哈,话不多说,开始吧;
题目大意:
输入三个int型整数a,b,c,然后让你求出a/b的保留c为小数形式;
基本思路:
这里有一个特殊写法,可以学一下,在不超过16位的时候还是可行的,然后超过了,就模拟手算;
代码如下:
不超过16位:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*lf",c,(double)a/b);
return 0;
}
模拟:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)==3&&a&&b&&c)
{
int t,num=1;
t=a/b;
printf("%d.",t);
a=a-b*t;
while(num<c)
{
a*=10;
t=a/b;
printf("%d",t);
num++;
a=a-b*t;
}
a*=10;
int tt=a/b;
a=a-b*tt;
a*=10;
t=a/b;
if(t>=5) tt++;//确保最后一位四舍五入;
printf("%d\n",tt);
}
return 0;
}