/*****接受一个以n/d形式的分数输出他的小数形式 ********/
/*****如果他的小数形式有循环节,要将其用括号括其来****/
/********求解可以用模仿手算除法的形式,***************/
/***********重复进行求商和余数的运算,****************/
/***********到余数为0活出现循环节为止*****************/
#include<stdio.h>
#define N 1000
int left[N],dight[N]; //商数,余数
int q; //循环节
int top;
int n,d;
void work()
{
while(left[top]!=0)
{
top++;
left[top]=(left[top-1]*10)%d;
dight[top]=(left[top-1]*10)/d;
if(top>2)
for(int i=0;i<=top;i++) //检测循环节
{
if(left[top]==left[i])
{
q=top;
return;
}
else
break;
}
}
}
void init()
{
left[0]=n%d;
dight[0]=n/d;
top=0;
q=0;
}
void print()
{
printf("%d/%d = ",n,d);
if(dight[0]!=0)
printf("%d",dight[0]);
if(top>0)
{
printf(".");
if(q>0)
{
printf("(");
for(int i=1; i<=q; i++)
printf("%d",dight[i]);
printf(")");
}
else
{
for(int i=1; i<=top; i++)
printf("%d",dight[i]);
}
}
}
void main()
{
printf("enter n / d:/n");
scanf("%d %d",&n,&d);
init();
work();
print();
}