[C++]求分数转小数得到小数循环节

【摘要】编程程序,把输入的有理数转换为无限循环小数例:输入37输出0.[428571]Code://输出循环小数,中括号包括循环节//输入37//输出0.[428571]/**@name...

编程程序,把输入的有理数转换为无限循环小数
例:
输入 3 7

输出 0.[428571] 

C++

Code:


//输出循环小数,中括号包括循环节
//输入 3 7
//输出 0.[428571]  

/*
*	@name : main.cpp 
*	@author: DYBOY
*	@time: 2018/03/09
*/

#include <iostream> 
using namespace std;

//main 函数 
int main(){
	int zi,mu,new_beichushu,ini_num = 0; 	//分子,分母 ,余数 
	cout<<"Please input the fenzi(x) & fenmu(y)->(<0x<y):";
	cin>>zi>>mu;
	new_beichushu = zi;	//被除数为分子 
	int arr[1000],shang[1000];	//临时存储 
	for(int i = 0;i<1000;i++){ arr[i] = -1; shang[i] = 0; }	//初始化 
	while(new_beichushu != 0 && arr[new_beichushu] == -1) {	//当被除数等于0的时候,表示已经除尽了 
		arr[new_beichushu] = ini_num;	//如果商中出现相同数组下标 ,此处为之后判断做出依据 
		new_beichushu = new_beichushu * 10; //除法规则 
		ini_num++;
		shang[ini_num] = new_beichushu/mu;	//整除存储商 
		new_beichushu = new_beichushu % mu;	//得到余数 
	}
	//输出 
	cout<<"zi/mu = 0.";
	if(new_beichushu != 0){
		for(int i = 1;i<=arr[new_beichushu];i++){ cout<<shang[i]; }
		cout<<"[";
		for(int i=arr[new_beichushu]+1;i<=ini_num;i++){ cout<<shang[i]; }
		cout<<"]";
	}
	else{
		for(int i=1;i<=ini_num;i++){ cout<<shang[i]; }
	}
	return 0;
}


 小东
 简介:专业团队网站开发、安全运维,合作意向请联系!

扫码关注微信公众号:ITDYBOY,学前端,学安全,从0到1,从1到精通!

扫码关注微信公众号:ITDYBOY

发表评论

游客
送你一朵小花花~

帅人已评(13)