西工大NOJ数据结构实验——1.2高精度计算PI值
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
typedef struct NODE{int n;int power;struct NODE* pre;struct NODE* next;
}NODE;void PiCreateAndInitial(NODE* head,int m) {
//创建双向循环链表,并且初始化链表 int tempx=m;NODE* temp = head;for (;m>=0;m--){NODE* p = (NODE*)malloc(sizeof(NODE));if (p) {if(m==tempx){p->n=1;}else{p->n=0;}p->power=m-tempx;temp->next = p;p->pre=temp;temp = p;}}temp->next=head;head->pre=temp;
}void PiOutput(NODE* head,int m) {
//链表的遍历 char s[520]={0};char *sp=s;NODE* p = head->next;while ((m--)>=0) {*sp=(p->n)+48;sp=sp+1;if((p->power)==0){*sp='.';sp=sp+1;}p = p->next;}printf("%s\n",s);
}void PiMultiply(NODE* head,int n){
//大数乘一个整数 int Cin=0;NODE* p=head->pre;while(p!=head){p->n=(p->n)*n+Cin;Cin=(p->n)/10;p->n=(p->n)%10;p=p->pre;}
}void PiDivide(NODE* head,int n){
//大数除一个整数 int temp=0;NODE* p=head->next;while(p!=head){temp=(p->n)%n;p->n=(p->n)/n;(p->next)->n=(p->next)->n+10*temp;p=p->next;}
}void PiAdd(NODE* head1,NODE* head2){
//把累加的结果保存下来 NODE* p1=head1->pre;NODE* p2=head2->pre;int Cin=0;while(p1!=head1){p2->n=(p2->n)+(p1->n)+Cin;Cin=(p2->n)/10;p2->n=(p2->n)%10;p1=p1->pre;p2=p2->pre;}
}
int main(){int m;scanf("%d",&m);//完成题目的唯一输入要求 NODE* head1=(NODE*)malloc(sizeof(NODE));NODE* head2=(NODE*)malloc(sizeof(NODE));head1->next=head1->pre=NULL;head2->next=head2->pre=NULL;if(head1&&head2){PiCreateAndInitial(head1,750);PiCreateAndInitial(head2,750);for(int n=1;n<=5000;n++){int temp=2*n+1;PiDivide(head1,temp);PiMultiply(head1,n);PiAdd(head1,head2);}PiMultiply(head2,2);PiOutput(head2,m);}return 0;
}
5
3.14159--------------------------------
Process exited after 1.226 seconds with return value 0
请按任意键继续. . .
西工大NOJ数据结构实验——1.2高精度计算PI值相关推荐
- 数据结构实验1.2—高精度计算PI值(西工大)
这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数 ...
- 西工大NOJ数据结构实验——1.1合并有序数组
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct NODE{int n; ...
- 西工大NOJ数据结构实验——2.1稀疏矩阵转置
对稀疏矩阵进行转置操作,按照老师讲的,有两种办法.我用的是第一种最简单的,从上到下一行一行得走,虽然速度很慢,但是简单. 说实话这个题目很讨厌,我们定义的三元组里面mu表示的是行数,但是题目要求输入的 ...
- 西工大NOJ数据结构实验——实验 2.4稀疏矩阵的乘法
然后呢,对于这道题,有2点要注意: 1.在Sample Input和Sample Output中,所有的"?"都是因为格式问题,让空格转成了"?",所以我们在程 ...
- 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)
我第一下拿到这个题目,第一反应就是先定义好数据结构,然后构建好十字链表基础操作的函数,也就是"创插遍历"这些操作.下面是我的定义和函数操作. typedef int ElemT ...
- 西工大NOJ数据结构理论——021.逆波兰表达式(严7.38)
这道题我参考的是(80条消息) 『西工大-数据结构-NOJ』 021-逆波兰表达式(耿7.38) 『西北工业大学』__LanXiu的博客-CSDN博客 (准确来说是快期末考试了,所以各科老师都在疯 狂 ...
- 西工大NOJ数据结构理论——017.输出以二叉树表示的算术表达式(严6.51)
(17条消息) 『西工大-数据结构-NOJ』 017-输出以二叉树表示的算术表达式(耿6.51) 『西北工业大学』__LanXiu的博客-CSDN博客 上面是我参考的一位学长的博客. 先序建立二叉树, ...
- 西工大NOJ数据结构理论——014.求广义表深度(严5.30)
第一下拿到这道题,我的脑袋轰一下就大了.如果说用"括号匹配"来做的话,这其实很简单.但是如果要用广义表来做的话,难度哗哗哗的就涨上来了.为什么呢?首先,要把读入的字符串存到广义表里 ...
- 西工大NOJ数据结构理论——007.表达式括号与匹配(严3.19)
害怕提交次数过多,然后不再跑代码,影响成绩,所以又重新创建了两个号来测这道题. 结果全都正确,但就是一直"WA",然后Debug了近5个小时才把"WA"改成&q ...
最新文章
- ARM-Linux与嵌入式开发
- 人生哲理名言六十六条
- java.lang.ClassNotFoundException
- JavaWeb的一些理解
- iptables做路由转发服务器经典案例
- Eclipse使用SVN
- 内存不能为读写的解决方法
- 如何使用ABAP code inspector找出所有在LOOP里访问database的操作
- [C++]有关深复制与copy constructor的一些问题与实例
- 牛客网 【每日一题】5月20日题目 简单瞎搞题
- 串口助手驱动_STM32Cube22(补充) | 使用硬件I2C驱动OLED(SSD1306)
- docker管理应用程序数据、容器网络
- POJ3494Largest Submatrix of All 1’s[单调栈]
- 苹果电脑 默认安装jdk位置_CH01_JDK安装和配置(含macOS)
- 【Python爬虫】花瓣网爬取美女图片
- java识别答题卡纸_识别复杂的答题卡的主要算法
- python 请在微信客户端打开链接-怎么转发微信聊天记录-我用 Python 破解了微信聊天记录,自动同步微信文章...
- 2019.08-2020.06计算机考研指导总结篇
- Web The7安装
- PLC控制系统检查与维护方法