一 问题描述
使用数组精确计算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;
}
}
标签:百题,5.4,cout,int,4.8,存放,数组,余数 From: https://www.cnblogs.com/galileo9527/p/17372762.html