#include "iostream.h"
#include "conio.h"
//函数声明===============================================
inline int sang(int a,int b);
void main()
{
int A[10000], B[10000], result[15000]; //A[]、B[]分别是除法每一步中的被除数和除数
int x,y,start,count,i=0; //start是判断选换位置的变量
bool flag=false; //flag是判断是否开始循环的变量
cout<<"输入分子: ";
cin>> x;
cout<<endl<<"输入分母: ";
cin>>y;//x是分子,y是分母
//按照除法的原理一步一步计算》》》》》》》》》》》》》》》》》》》》》》》》》》》
A[i]=x*10;B[i]=A[i]%y;result[i]=sang(A[i],y);
do
{
if(B[i]!=0)
{
i++;
A[i]=B[i-1]*10;
count=0;
while(A[i]<y)
{
A[i]=A[i]*10;
count++;
}
B[i]=A[i]%y;
result[i]=sang(A[i],y);
for(int j=0;j<count;j++)
result[i-1]=result[i-1]*10;
//判断何处开始循环==============================
for(j=0;j<i;j++)
{
if(B[i]==B[j] && B[i]!=x)
{
flag=true;
start=j+2;
break;
}
else if(B[i]==x)
{
flag=true;
start=-1;
break;
}
else
flag=false;
}
//==============================================
}
else
{
start=-2;
break;
}
}while(flag==false);
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
//输出结果--------------------------------------
cout<<"0.";
if(start==-1)
cout<<"(";
for(int j=0;j<=i;j++)
{
if(j!=-1 && j!=-2 && j==start-1)
cout<<"(";
cout<<result[j];
}
if(start!=-2)
cout<<")";
if(start>=-1)
cout<<"无限循环小数"<<endl;
else
cout<<"有限小数"<<endl;
//-----------------------------------------------
getch();
}
//函数定义===============================================
int sang(int a,int b) //求商函数
{
int s;
if(a>b)
s=(a-(a%b))/b;
else if(a=b)
s=1;
else
s=0;
return s;
}