此贴仅作为我学习计算机过程中留下的记录。。。
#include <iostream>
using namespace std;
#define ARRSIZE 5000
int x[ARRSIZE],y[ARRSIZE];
int chufa(int a,int b);
int main(){
int High;
cin>>High;
int a = 1,b = 3;
int c,d;
x[0] = 2;
y[0] = 2;
for (int i = 0; i < ARRSIZE; i++)
{
//c = z*a;
int t = 0; //同时用t判断是否需要进位
int num;
for(int j = ARRSIZE-1;j>=1;j--){
num = x[j]*a+t;
x[j] = num%10;
t = num/10;
}
x[0] = x[0]*a+t;
int m,n;
// z = z*a/b;
// num = num+z;
// a++;
// b+=2;
t = 0;
for(int j = 0;j<ARRSIZE;j++) //x[0]表示整数部分,x[0]以外表示小数部分,用x数组表示z*a/b
{
num = x[j]+t*10;
x[j] = num/b;
t = num%b;
}
//y[ARRSIZE]表示num = num+z;
t = 0;
for(int j = ARRSIZE-1;j>=1;j--)
{
num = y[j] + x[j] + t;
y[j] = num % 10;
t = num/10;
}
y[0] = x[0]+y[0]+t; //整数部分不需要模运算
a++;
b += 2;
}
cout<<y[0]<<".";
for(int i = 1;i<High+1;i++)
{
cout<<y[i];
// if (i%100 == 0)
// {
// cout<<"\n";
// }
}
cout<<"\n";
system("pause");
return 0;
}
若想改变小数点后位数,只需要改变数组大小ARRSIZE即可,有什么可以改进的地方,可以在评论区讨论。感谢批评指正!