#include<iostream>
using namespace std;
void A()
{
int m, n;
m = 1;
n = 3;
/*cout << "请输入最简分数分子分母(m/n)" << endl;
cin>> m;
cout << "请输入最简分数分子分母(m/n)" << endl;
cin >> n;*/
int T, a[5], b[5];
a[0] = m * 10 / n;
b[0] = m*10 % n;
m = b[0];
T = 0;
cout << "0."<<a[0];
for (int i = 1; i < 5; i++)
{
m *= 10;
b[i] = m % n;
if (b[i] == 0) break;
for (int j = i - 1; j >= 0; j--)//循环判断是否出现循环部分
{
if (b[i] == b[j])
{
T = 1; break;
}
}
if (!T)
{
a[i] = m / n;m=b[i]; cout << a[i];
}
else { cout<<endl; cout << "从第" << i << "位开始出循环"; i = 100; }
}
}
void main()
{
A();
system("pause");
using namespace std;
void A()
{
int m, n;
m = 1;
n = 3;
/*cout << "请输入最简分数分子分母(m/n)" << endl;
cin>> m;
cout << "请输入最简分数分子分母(m/n)" << endl;
cin >> n;*/
int T, a[5], b[5];
a[0] = m * 10 / n;
b[0] = m*10 % n;
m = b[0];
T = 0;
cout << "0."<<a[0];
for (int i = 1; i < 5; i++)
{
m *= 10;
b[i] = m % n;
if (b[i] == 0) break;
for (int j = i - 1; j >= 0; j--)//循环判断是否出现循环部分
{
if (b[i] == b[j])
{
T = 1; break;
}
}
if (!T)
{
a[i] = m / n;m=b[i]; cout << a[i];
}
else { cout<<endl; cout << "从第" << i << "位开始出循环"; i = 100; }
}
}
void main()
{
A();
system("pause");
}
可以修改数组大小,以扩大寻找循环范围
偶然发现网上一段非常精炼的输出高精度小数的代码
#include <stdio.h>
int main()
{
int a, b, i, m, n;
scanf_s("%d/%d", &a, &b);
printf("0.");
m = a % b * 10;
for (i = 0; i<200; i++)
{
n = m / b;
m = m % b * 10;
printf("%d", n);
if (m == 0)
{
break;
}
}
printf("\n");
return 0;
}
具体链接
点击打开链接