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

作者&投稿:韩腾 (若有异议请与网页底部的电邮联系)
请编写一个函数fun,它的功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)~

首先主函数缺少类型说明符,应加void
其次,数据n定义为整形,当进行分式运算,结果为整形,小数会被舍去,再赋给double类型则是四舍五入后的数。由于分数都是小于0.5的,故都会当成0处理。将数据n定义为double类型即可。
代码如下:
#include#includevoid main(){ double s,i,t; double n=2; s=1; i=1; do { t=(n-1)/(2*n-1); i=i*t; s=s+i; n++; }while(i>=0.0005); printf("%lf",s);} 结果为:

无论是你的答案还是正确答案 都有问题
你的答案 问题在于自变量i设置成了double型
浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题

所谓的正确答案,没有这个问题 但是不符题意
即某项小于0.0005时停止迭代
正确答案中是某项小于精度后 把该项累加并在下一项停止迭代

下面是把你的程序改成了完全符合“正确答案”的代码

PS: 题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411
要想输出3.1416 最低精度为0.00002
#include double fun ( double eps){ double pi=1,a=1;int i; for(i=1;a>=eps;i++){ a=a*i/(2*i+1); pi=pi+a; } return 2*pi;}main( ){ double x; printf("Input eps:") ; scanf("%lf",&x); printf("
eps = %lf, PI=%.4lf
", x, fun(x));//输出4位小数}

无论是你的答案还是正确答案 都有问题

你的答案 问题在于自变量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;
int i;
    for(i=1;a>=eps;i++){
        a=a*i/(2*i+1);
        pi=pi+a;
    }
    return 2*pi;
}
main( )
{ double  x;
  printf("Input eps:") ;
  scanf("%lf",&x); printf("
eps = %lf, PI=%.4lf
", x, fun(x));//输出4位小数
}


#include <stdio.h>
double fun ( double eps)
{ double pi=1,a=1,t=1;
int i;
for(i=1;2*t>=eps;i++){
a=a*i/(2*i+1);
t=a;
//∏与∏/2相差二倍,所以某项小于0.0005应当是2a
printf("%lf\n",a);
pi=pi+a;
}
return 2*pi;
}
main( )
{ double x;
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf, PI=%.4lf\n", x, fun(x));//输出4位小数
}
请大神帮我看看我错在哪?


编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c...
scanf("%d",&b);int c=fun(a,b);printf("结果为:%d",c);return 0;}

编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和1...
include <stdio.h>int fun (int a[]){int index = 0;for (int k = 0 ; k < 1000 ; k++ ){if(k%7==0)if(k%11!=0)a[index++]=k;if(k%11==0)if(k%7!=0)a[index++]=k;}return index;}int main( ){ int aa[1000], n, k ; n = fun ( aa ) ; for...

编写函数fun其功能是根据整形参数m,计算如下公式值:y=1+1\/3+1\/5+...
include<stdio.h>double fun(int m){int i; double y=0; for(i=0;i<=m;i++) y+=1.0\/(2*i+1); return y;}int main ( ){ int m; scanf("%d",&m); printf("%f\\n",fun(m)); return 0;}

请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值...
int fun(int *p,int n){int t;for(t=0,n--;n>=0;n--)if(p[n]>t)t=p[n];return t;

请编写函数fun,它的功能是:计算并输出n(包括n)以内能被3或7整除的所有...
double fun(int n){ int i; double s=0; for(i=1;i<=n;i++) if(i%3==0||i%7==0) s=s+1\/i; return s;}

fun函数的作用是什么,举个例子。
fun函数特点:fun函数使用来举例或作语法演示的,需要在使用前自行定义声明。fun一词没什么特别含义,也可以换成别的名称,如"abc"或者"baidubaike"。它只表示引用之前出现的函数,以调用它执行一些需求,int fun(int x,int y)只是一个举例的函数名而已,以及其声明的参数类型。函数fun的功能是:将a...

c语言编写函数fun,其功能是:求1-2+3-4+5-6+……-10000的值._百度知...
include <stdio.h> int fun(){int i,s=0;for(i=1;i<10001;i++)s+=i%2?i:-i;return s;} int main(){ printf("%d\\n",fun());return 0;}

fun函数的功能是什么
你要看看fun()函数的函数体的内容是什么,fun()只是一个函数名称,里面的函数体你怎么写它的功能就是什么比如:void fun(){ printf("这个fun()函数的功能就是输出文字\\n");} void fun(){ int a,b,c;a=7;b=8;c=a+b;printf("这个fun()函数的功能就是计算a+b的值。c=%d\\n",c);...

请编写一个函数fun,它的功能是根据以下公式求π的值(要求满足精度0.0005...
首先主函数缺少类型说明符,应加void 其次,数据n定义为整形,当进行分式运算,结果为整形,小数会被舍去,再赋给double类型则是四舍五入后的数。由于分数都是小于0.5的,故都会当成0处理。将数据n定义为double类型即可。代码如下:include<stdio.h>#include<math.h>void main(){ double s,i,t...

C语言请编写函数fun,其功能是:移动字符串中的内容,移动的规则是把第1...
void fun(char *w,int m){ int i,j,k;char b;k=strlen(w);\/\/读出字符串的长度 for(i=0;i<m;i++){ b=w[0];\/\/保存每次变换前的第一个字符 for(j=0;j<k-1;j++)\/\/将数组进行左移位 { w[j]=w[j+1];} w[k-1]=b;\/\/将保存的那个字符还原到数组的最后的位置 } } ...

回民区13297686271: 编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).请编写函数fun,其功能是根据以下公式求π的值(要求满... -
辛泻鞣酸:[答案] 无论是你的答案还是正确答案 都有问题 你的答案 问题在于自变量i设置成了double型 浮点型 做自加操作的时候可能导致死... 要想输出3.1416 最低精度为0.00002 #include double fun ( double eps) { double pi=1,a=1; \x09int i; for(i=1;a>=eps;i++...

回民区13297686271: 编写fun,其功能是:根据以下公式计算s,将结果作为函数值返回;n通过形参传入. 帮我看看我哪里出问题了?编写fun,其功能是:根据以下公式计算s,将... -
辛泻鞣酸:[答案] #includedouble fun(int n){\x05/*\x05\x05程序最主要的问题是变量类型声明不对.\x05\x05如果变量 a 声明为 int ,那么 1/a 的结果是没有小数部分的,结果永远是一个整数.\x05\x05这就造成了精度误差.\x05\x05要想结果...

回民区13297686271: 编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;m通过形参传入.S=1 - 1/(2*2) - 1/(3*3)……1/(m*)主函数中通过调用fun函数实现... -
辛泻鞣酸:[答案] 不知道是不是你想要的 #include double fun(int m) { int i=1; double sign=-1; double s=1; while(i++

回民区13297686271: 编写一个fun函数,功能是根据给定的三角形三条边长a,b,c,求三角形的面积 -
辛泻鞣酸:[答案] include include ddouble fun(int a ,int b,int c) { int p; p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); }

回民区13297686271: 编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+...+1/m!(m是偶数) -
辛泻鞣酸:[答案] main() { int m; scanf("%d,&m"); void fun(m); { if(m%2==0) { float y=0,x=0; int u; int i; for ( i=2,u=1;i

回民区13297686271: 【程序设计】 题目:编写函数fun,其功能是:根据以下公式求π的值
辛泻鞣酸: double fun ( double eps) { double s=1.0,s1=1.0; int n=1; /**********Program**********/ double i=1.0,sum=1.0; while(i>eps) {i=1.0/(2*n+1); if(n%2)sum-=i; else sum+=i; n++; } sum*=4; return sum; /********** End **********/ }

回民区13297686271: VB 题目:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2+1/4+1/6..+1/2m 程序代码帮忙下! -
辛泻鞣酸:[答案] private sub fun(m as integer) as single dim i as integer for i=1 to m fun=fun+1/(2*i) next end sub

回民区13297686271: 编写函数fun其功能:根据整型形参m计算如下公式的值:y=1/2!+1/4!+…+1/m! -
辛泻鞣酸:[答案] 帮你实现了一下,自己没测试,应该没什么大问题,思路很清晰的 【具体示例】int factor(int n)//首先定义了一个求阶乘的函数{ int result; if(n==0||n==1) result=1; else result=n*factor(n-1...

回民区13297686271: 编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)' 例如:若m=9,则应输出:1.168229要求:函数中用到... -
辛泻鞣酸:[答案] Private Function Fun(m As Integer) As Single ' End Function

回民区13297686271: 编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代). -
辛泻鞣酸: 你把t=p/i;改成t=p/n;代码逻辑就没有问题了.关键是esp值太大,达不到精度要求,改成0.00000005试试.另未见你的main,是不是其中还有错不得而知.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网