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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航