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

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

例:

输入 3 7

输出 0.[428571]

C++实现:

//输出循环小数,中括号包括循环节
//输入 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;
}

运行结果:

运行结果

发表评论 / Comment

用心评论~

金玉良言 / Appraise
BrokersMedLV 1
2020-03-03 10:51
线上-在线-网上-联机 Forex-外汇-外币兑换-创汇: 当前-电流-实际-最新 经济-金融-财务-财政-理财-财经 新闻-消息 世界 市场的, 预测-预报, 分析学, 技术性 剖析-浅析, 图表-海图, 曲线图 (图形), 图解-简图 货币-币种-通货-币值. https://currency-trading-brokers.com/forex-comparisons-ratings-reviews-china.html
YondexLV 1
2019-12-31 20:56
香川県さぬき市長尾 ルーちゃん餃子のフジフーヅは入ったばかりのバイトにパワハラの末指切断の大けがを負わせた犯罪企業.中卒社員岸下守(現在 鏡急配勤務)の犯行.