c语言求pi的值精度,这个高精度计算pi值的程序用的是什么思想?急

#include 

#include 

#define MAX 1000

typedef struct DuLNode{

int            data;

struct DuLNode *first;

struct DuLNode *last;

struct DuLNode *prior;

struct DuLNode *next;

}DuLNode,*DuLinkList;      //创建双向链表

void InitLinkList(DuLNode **p)

{

*p=(DuLinkList)malloc(sizeof(DuLNode));

if(*p!=0)(*p)->next=(*p)->prior=*p;

}

void Create(DuLinkList L)

{

DuLinkList p=L,q;

int i;

L->first=p;

for(i=0;i

q=(DuLinkList)malloc(sizeof(DuLNode));

q->data=0;

p->next=q;

q->prior=p;

q->next=NULL;

p=q;

}

L->last=q;

}

void Jia(DuLinkList a,DuLinkList b)

{

DuLinkList p=a->last,q=b->last;

int x;

while(q!=b->first)

{

x=q->data+p->data;     //i位的数

q->data=x%10;          //i位的个位

q->prior->data+=x/10;  //进位

q=q->prior;

p=p->prior;

}

}

void Cheng(DuLinkList a,int k)

{

DuLinkList p=a->last;

int x,y=0;

for(;p!=a->first;p=p->prior)

{

x=(p->data)*k+y;//i位的数

y=x/10;//进位加数

p->data=x%10;//i位的个位

}

x=(p->data)*k+y;//i位的数

y=x/10;//进位加数

p->data=x%10;//i位的个位

}

void Chu(DuLinkList a,int k)

{

DuLinkList p=a->first;

int x,y=0;

for(;p!=NULL;p=p->next)

{

x=p->data+y*10;//借位除

p->data=x/k;//整除数

y=x%k;//余数

}

}

void Calculation(int n)

{

int i,top=1,bottom=3,x=0;

DuLinkList sum,num,l,p;

InitLinkList(&sum);

InitLinkList(&num);

Create(sum);

Create(num);

sum->first->data=2;

num->first->data=2;

l=num;

while(x++<1800)

{

Cheng(num,top);

Chu(num,bottom);

Jia(num,sum);

top++;bottom+=2;

}

printf("3.");

for(i=0;i

{

printf("%d",sum->next->data); //从十分位开始打印

sum=sum->next;

}

}

int main(){

int n;

scanf("%d",&n);

Calculation(n);

printf("\n");

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值