输入一个真分数的分子和分母,求出其精确值,如1/3=0.33(3),1/8=0.125

类别:编程语言 点击:0 评论:0 推荐:

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

本文地址:http://com.8s8s.com/it/it23536.htm