C语言程序调用函数返回值的问题
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 21:08:33
C语言程序调用函数返回值的问题
题目是求pi的值:
pi/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*2*3*.*n)/(3*5****(2n-1))
double fun (double eps)
{
double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
//对各个累加项,累加积等赋初始化值
while((fabs(s))>=eps)//精度判断
{
pi+=s; //pi存放累加和
t=n/(2*n+1); //每一项
s*=t; //累积
n++;
}
pi=pi*2; //求得π值
return pi;
}
如果改为
double fun (double eps)
{
double sum=1,a=1,b=1,i=1;
while(fabs(b)>=eps)
{
a=i/(2*i+1);
b*=a;
i++;
sum+=b;
}
sum=2*sum;
return sum;
}
当eps=0.0005时,为何返回值不一样,
第一个是3.140578 ,第二个是3.141106
题目是求pi的值:
pi/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*2*3*.*n)/(3*5****(2n-1))
double fun (double eps)
{
double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
//对各个累加项,累加积等赋初始化值
while((fabs(s))>=eps)//精度判断
{
pi+=s; //pi存放累加和
t=n/(2*n+1); //每一项
s*=t; //累积
n++;
}
pi=pi*2; //求得π值
return pi;
}
如果改为
double fun (double eps)
{
double sum=1,a=1,b=1,i=1;
while(fabs(b)>=eps)
{
a=i/(2*i+1);
b*=a;
i++;
sum+=b;
}
sum=2*sum;
return sum;
}
当eps=0.0005时,为何返回值不一样,
第一个是3.140578 ,第二个是3.141106
问题出现在这里:第一个程序是先判断上次循环得到s的值是否小于eps,把其值累加到pi的;而第二个程序是先得到b值后没进行判断就把它加给sum了,进行下一个循环才判断b是否符合条件的!综上,最后导致第2个函数比第一个函数多加了项,就出现第2个的返回值大于第1个
C语言程序调用函数返回值的问题
C语言程序,要求两个数通过函数调用比较两个数的大小,并把大数返回给主调函数,输出这个数.
C语言 调用函数求最大值问题
用C语言编写一个程序 在主函数通过键盘输入x,调用函数对x进行判断,如x大于0,返回1,否则返回0
如何用函数调用写一个求最大公约数最小公倍数的C语言程序
c语言程序.当n=5时,下列函数的返回值是:
谁会用C语言 写“定义函数返回两个数中较大的数,在主函数中调用并输出.编写主函数调用该函数”.
MATLAB函数调用程序问题
在C语言中,若调用一个函数,且此函数没有return值,该函数返回一个不确定的值,这句话对吗?
c程序如何调用主函数下面定义的函数,
C语言程序“编写由三角形三边求面积的函数”要求必须使用函数调用.还要用到海伦公式.
在C语言程序中,被调用的函数必须在main( )函数中定义 这句话对吗、、、