计算分数精确值

#include<iostream>//计算分数的精确值
using namespace std;
int remainder[101],quotient[101];
//remainber:存放除法的余数;quotient依次存放商的每一位

int main()
{
	int m,n,i,j;
	cin>>m>>n;//输入被除数和除数
	cout<<m<<"/"<<n<<"=0.";
	for(i=1;i<=100;i++)//i:商的位数
	{
		remain[m]=i;//m:除数的余数remainder[m]:余数对应的商的位数
		m*=10;//余数扩大10位
		quotient[i]=m/n;//商
		m=m%n;//求余数
		if(m==0)//余数为零即除完
		{
			for(j=1;j<=i;j++)//表示式有限小数
				cout<<qutient[j];//输出商
			break;//退出循环
		}
		if(remain[m]!=0)//若该余数对应的位在前面已经出现过
		{
			for(j=1;j<=i;j++)
				cout<<quotient[j];//则输出循环小数
			cout<<"\n是无限循环小数,并从小数点后"<<remainder[m]<<"位";
			cout<<"到"<<i<<"位\n";//输出循环节的位置
			break;//退出
		}	
	}
	system("pause");
	return 0;
}
//我们在小学学过的除法公式:及为对余数处理,如果遇到相同的余数后面的数就会和前面的一段数是相同的。

猜你喜欢

转载自blog.csdn.net/weixin_43843978/article/details/88055309