#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; } 
|