题目:输入n,输出PI精确到小数点后n位的PI值。

#include<stdio.h>
#include<stdlib.h>typedef struct node {int data;struct node*next;struct node*pre;
}node,*list;int n;void init(list &l)
{list tail = l, p;int i = 0;p=(list)malloc(sizeof(node));tail->next = p;p->pre = tail;tail = p;p->data = 2;tail->next = NULL;
}void destorylist(list &l)
{list p=l->next;list q;while (p->next){q = p->next;free(p);p = q;}free(l);l = NULL;
}
void insert(list &l, int data)
{list p = l;if(p == NULL){return;}else{while (p->next)  p = p->next;list temp = (list)malloc(sizeof(node));p->next = temp; temp->data = data;temp->pre = p;temp->next = NULL;        }
}void tran(list l)
{printf("%d.",l->next->data);l=l->next;list p;p=l->next;while(p!=NULL&&n){printf("%d",p->data);p=p->next;n--;}printf("\n");
}int main()
{   list p,sum1;int i;scanf("%d",&n);p=(list)malloc(sizeof(node));sum1=(list)malloc(sizeof(node));p->next = NULL;sum1->next=NULL;p->pre = NULL;sum1->pre=NULL;init(p);init(sum1);for(i=1;i<=1000;i++){insert(p,0);insert(sum1,0);}list q,sum;int ret,tmp,cnt=3,num=1;int flag=1;while(flag){          q=p->next;sum=sum1->next;ret=0;while(q->next){q=q->next;            }while (q){tmp=q->data*num+ret;q->data=tmp%10;ret=tmp/10;if(q->pre==NULL)break;else{q=q->pre;}}ret=0;q=p->next;while (q){tmp=q->data+ret*10;q->data=tmp/cnt;ret=tmp%cnt;if(q->next==NULL)break;else{q=q->next;}}q=p->next;sum=sum1->next;while(q->next&&sum->next){q=q->next;sum=sum->next;}flag=0;while (q&&sum){tmp=sum->data+q->data ;sum->data=tmp%10;if(sum->pre==NULL||q->pre==NULL){break;}else{sum->pre->data+=tmp/10;flag |= q->data;sum=sum->pre;q=q->pre;}}num++;cnt+=2;}tran(sum1);destorylist(p);destorylist(sum1);return 0;
}

数据结构28——高精度计算PI值相关推荐

  1. 高精度计算PI值 C语言 思路,高精度计算pi

    高精度计算PI值 题目描述 ​    使用双向链表作为存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后 500 位),高精度计算PI值.提示:可以利用反三角函 ...

  2. 高精度计算PI值 C语言 思路,高精度计算PI值

    高精度计算PI值 高精度计算PI值 所用公式: #include #include typedef struct list{ int data; struct list *next; struct l ...

  3. 数据结构实验1.2—高精度计算PI值(西工大)

    这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数 ...

  4. 西工大NOJ数据结构实验——1.2高精度计算PI值

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> typ ...

  5. 【算法】高精度计算π(pi)值

  6. 高精度计算Π的值(C语言)

    题目要求 限制使用双向链表作存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后500位),高精度计算PI值.可以利用反三角函数幂级展开式来进行计算. 输入5 输 ...

  7. 核苷酸pi值计算方法

    核苷酸pi值计算方法 哈喽,今天小编给大家分享的是核苷酸pi值计算方法,主要是介绍序列比对(MEGA和MZAFFT版的两种方法)计算pi值(dnasp)的两个步骤,有兴趣大家可以瞅瞅. 一.序列比对 ...

  8. Java循环案例-求PI值

    30天! 题目一: PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17- 1.这个算式的结果会无限接近于圆周率的值,我国古代数学家祖冲之计算出,圆周率在3.14159 ...

  9. linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值

    我正在尝试使用montecarlo方法和使用并行C代码来查找PI的值.我已经写了serail代码并且工作正常.但是,并行代码给我一些时间0或PI错误的值负值使用蒙特卡洛方法多线程计算pi值 我的代码 ...

最新文章

  1. ATM高层定义了4类业务,压缩视频信号的传送属于______。B
  2. python r语言 结合 部署_(转)python中调用R语言通过rpy2 进行交互安装配置详解...
  3. Python获取环境变量值
  4. Master PDF Editor_v5.7.00 PDF编辑
  5. python爬虫金融数据_python爬虫项目-爬取雪球网金融数据(关注、持续更新)
  6. 开源软件许可协议简介
  7. Linux中的 real user, effective user, saved set user 三种用户ID
  8. [Code] 收集各种语言对图片的处理算法实现 图片模糊
  9. ERROR:STATUS_BROM_CMD_SEND_DA_FALL(0xC0060003)
  10. 双闭环直流调速系统matlab/simulink仿真
  11. Oracle数据库备份与恢复
  12. 当AI邂逅电能:与图知科技一起探索工业AI王座|白洞战报
  13. [算法笔记]如何证明一个问题是NPC问题
  14. REVIT插件 | 建模助手这次的版本更新,BIMer都笑了
  15. Atitit MP3元数据抽取结果 音乐信息检索 取出了重复和英文的数据 一共368个。。 /bookmarksHtmlEverythingIndexPrj/src/apkg/songlistC
  16. awk 分隔符 多个空格_awk多分隔符
  17. 编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法
  18. 【金融项目】尚融宝项目(十一)
  19. geo读取表达矩阵 RNA-seq R语言部分(表达矩阵合并及id转换)
  20. CSRF 的攻击过程

热门文章

  1. excel - 按钮编程 -脚本编程 - VBA
  2. rdkit环境配置【2021】
  3. ansible模块管理与主机清单配置
  4. centos查看安装oracle客户端,CentOS 6.4 安装oracle客户端
  5. Oracle学习—图书管理系统_存储过程
  6. Windows之内存映射文件
  7. mysql中创建数据表
  8. 分析蓝牙协议栈源码bstack
  9. [绍棠] Vue解决V-HTML指令潜在的XSS攻击(‘v-html‘ directive can lead to XSS attack.)
  10. Arduino实时时钟设计(TM1637数码管显示)