5.4趣味百题 4.8

发布时间 2023-05-04 22:40:02作者: 混沌武士丞

一 问题描述

使用数组精确计算M/N(0<M<N<=100)的值。假如M/N是无限循环小数,则输出他的第一循环节和循环节的起止位置

二 设计思路

1.运用一个一维数组来存放商的每一位来提高精度   每次存放完之后把余数*10 再计算下一位。

2.运用一个一维数组存放余数,如果当出现余数为0时 则该数为有限小数,出现余数相同时 该数为无限循环小数

三 流程图

四 c++代码实现

#include<iostream>
using namespace std;


int main()
{
int a[101] = { 0 }; int b[101] = { 0 };
int x, y;
cin >> x >> y;
for (int i = 1; i <= 100; i++)
{
a[x] = i;
x *= 10;
b[i]=x / y;
x = x % y;
if(x==0)
{
cout << "有限小数:0.";
for(int j=1;j<=i;j++)
{
cout << b[j];
}
break;
}
if (a[x] != 0)
{
cout << "循环体为:" << endl;
for (int j = 1; j <= i; j++)
{
cout << b[j];
}
cout <<endl<<"位置"<< i;
break;
}
}