编写排列公式函数函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)

扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))程序运行后,若输入精度为0.0005,则输出为3.1416#include #include double fun ( double eps){ double pi=0,a=1,i;for(i=1;a>=i++){pi=pi+a;a=a*i/(2*i+1);}return 2*}main( ){void NONO ();printf("Input eps:") ;scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));NONO();}double fun ( double eps) { double s=1.0,s1=1.0; int n=1; while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/ {s1=s1*n/(2*n+1); /*求多项式的每一项*/s=s+s1; /*求和*/ n++; } return 2*s; }
十號風球001f2
扫二维码下载作业帮
1.75亿学生的选择
无论是你的答案还是正确答案 都有问题你的答案 问题在于自变量i设置成了double型&浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题所谓的正确答案,没有这个问题 但是不符题意即某项小于0.0005时停止迭代正确答案中是某项小于精度后 把该项累加并在下一项停止迭代下面是把你的程序改成了完全符合“正确答案”的代码PS:题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411要想输出3.1416 最低精度为0.00002#include&&stdio.h&double&&fun&(&double&&eps){&&&&double&pi=1,a=1;\x09int&i;&&&&for(i=1;a&=i++){&&&&&&&&a=a*i/(2*i+1);&&&&&&&&pi=pi+a;&&&&}&&&&return&2*}main(&){&double&&x;&&printf(&Input&eps:&)&;&&scanf(&%lf&,&x);&printf(&\neps&=&%lf,&PI=%.4lf\n&,&x,&fun(x));//输出4位小数}
为您推荐:
其他类似问题
扫描下载二维码求π,这样写为什么结果总是3.0988,总会有误差?【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:530,806贴子:
求π,这样写为什么结果总是3.0988,总会有误差?收藏
请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)。π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))程序运行后,若输入精度为0.0005,则输出为3.1416#include &stdio.h&#include &math.h&double
fun ( double
eps){double p=1,r=1;int n=1,a=1,b=1;for(n=1;r&=n++){a=a*(2*n+1);b=b*n;r=(double)b/a;p=p+r;}return (p*2);}main( ){void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));}问题是不是处在(double)b/a这里?不能分子分母分开计算?
c语言-达内课程学习,O基础学起只需4-16周便能掌握,适合高中以上初学者!达内培训c语言,O元试学学C语言,,高中以上,学习0压力!
for循环里的复合语句改成:r=r*n/(2*n+1);p=p+r;就没问题了。这两者为什么会不一样?智商拙计,,,,
百思不得妻姐
小兄弟,你还年轻,你走吧,我不想打击你,整个贴吧都是我的小号,不信我换个ID还说同样的话
搞这么复杂干嘛?用现成的就是了。#include &math.h&printf("%.12f", 4*atan(1));
#include &stdio.h&#include &math.h&double fun ( double eps){double p=1,r=1,b=1;int n=1,a=1;for(n=1;r&=n++){a=2*n+1;b=r*n;r=(double)b/a;p=p+r;}return (p*2);}main( ){ void NONO ();printf("Input eps:") ;scanf("%lf",&x);printf("\neps = %lf, PI=%lf\n", x, fun(x));}
你的第一个程序a=a*(2*n+1);b=b*n;写错了而且改为b=r*n;这句会强制转换,因为b为int型
c语言,全程实战教学模式,入门+精通+应用,4个月变身VR开发大师!c语言,10年以上教师一对一亲授,30000家合作企业,毕业推荐就业!
猪圣母 我最怕两个前锋:一个是罗纳尔多(因为他太厉害了) 一个是因扎吉(你永远要打起十二分的精神,因为他随时会在禁区内摔倒)。——内斯塔   --来自助手版贴吧客户端   --来自助手版贴吧客户端
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或请编程,根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)程序运行后,如果输入精度0.0005,则程序输出π的值为3.140578
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;导读:   233网校小编根据网友需求搜集整理2016年计算机二级《C语言》基础练习题及答案(5)供各位考生做题参考。考生可以通过以下内容进行做题,也可以直接进行做题。
2016年计算机二级《C语言》基础练习题及答案(5)1[单选题] 有以下程序:程序运行后的输出结果是( )。A.10,One*Dream!B.9,One*Dream!C.9,One*WorldD.10,One*World参考答案:A
参考解析:P是指向二维字符数组第二行One+Dream!的数组指针,所以长度是l0,打印输出的也是该字符串。
2[简答题]编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度0.0005,则程序应输出为3.14…。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
参考解析:【参考答案】
【考点分析】
本题考查:迭代法求给定多项式的值。迭代算法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋初值操作。
【解题思路】
首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用sl来表示
每一项,s表示求和后的结果。需注意sl和s的初值都为1.0,因为循环变量从第二项开始累加。
3[单选题] 软件设计中模块划分应遵循的准则是( )。
A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合
参考答案:B
参考解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能。
4[单选题] 有以下程序:
程序运行后的输出结果是( )。A.let=4B.m=2C.m=6D.m=5参考答案:C
参考解析:第一次外循环i的值为l,第一次内循环j的值为3,不满足条件执行in}=i}j即m的值为3;第二次j的值为2,不满足条件执行m·=i*j,即m的值为6;第三次j的值为1,不满足条件执行nl*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。
5[单选题] 有以下结构体说明、变量定义和赋值语句:
则以下scanf函数调用语句有错误的是( )。A.scanf(”%s”,s[0].name);B.scanf(”%d”,&s[0].age);
C.scanf(”%c”,&(ps一&sex));
D.scanf(”%d”,ps一&age):
参考答案:D
参考解析:本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps一&age为一个变量,不是指针,所以错误。
6[单选题] 有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。A.笛卡尔积B.交C.并D.自然连接参考答案:D
参考解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。
7[单选题] 有以下程序:
程序运行后的输出结果是( )。A.1002,ZhangDa,1202.0B.1002,ChangRon9,1202.0
C.1001,ChangRon9,1098.0
D.1001,ZhangDa,1098.0
参考答案:D
参考解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。
8[单选题] 以下叙述中正确的是
A.一条语句只能定义一个数组
B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D.在引用数组元素时,下标表达式可以使用浮点数
参考答案:B
参考解析:A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。
9[单选题] 有以下程序:
程序执行后的输出结果是( )。A.1B.2C.3D.4参考答案:C
参考解析:该程序中int 8 pl=&a,+p2=&b,4 P=&c;指定义三个指针变量,并赋值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;该条语句是给P所指的存储单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a+b,等价于c=1·3=3;因此C选项正确。‘
10[单选题] 以下叙述中错误的是( )。
A.可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
参考答案:A
参考解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A错误。热点推荐:
2016年告别盲目备考,233网校教研团队精心打造高通过率套餐班,全程内部密训锁分,保障一次过关!2016年计算机等级精讲班推荐——
计算机二级精讲班(<font color="#FF元惊喜抢购)
主讲:贺斌
主讲:梁咏
主讲:任丹阳
主讲:刘德强
主讲:张凯
MS Office高级应用
主讲:张凯
主讲:肖瑶星
Access数据库
主讲:任丹阳
主讲:邓伦丹
责编:tangting
海量免费模拟试题,在线测试。
各科每年真题试卷,实战演练!
逐章逐节针对练习,专项突破。
每天10道最新试题,随机练习。
处理 SSI 文件时出错以下试题来自:
问答题请编写一个函数fun(),它的功能是:根据以下公式求π的值(要求满足精度0.005,即某项小于0.005时停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))
程序运行后,如果输入精度0.0005,则程序输出3.14…。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<math.h>
double fun(double eps)
printf("Input eps: ");
scanf("%1f", &x);
printf("\neps=%1f,PI=%1f\n",x,fun(x));
为您推荐的考试题库
你可能感兴趣的试题
1.填空题 [1] i<=n
[2] i%3==0||i%7==0
[3] 1.0/i或1/(double)i
热门相关试卷
最新相关试卷

我要回帖

更多关于 fun函数的功能 的文章

 

随机推荐