读书人

帮忙一下,该怎么解决

发布时间: 2012-04-26 14:01:31 作者: rapoo

帮忙一下
为什么得不到正确的答案,思路错在了那里?这个程序是用二分法求方程的根,我知道我程序设计的二分法错了,可是不会改,求各位大侠帮忙
#include<stdio.h>
void main()
{
float shu(float a,float b,int c);
int hanshu( float a);
int i,j,k;
float t;
printf("请输入一个界限,并输入它的迭代次数\n");
//scanf("%d,%d,%d",&i,&j,&k);
i=1.0;
j=2.0;
k=1000;
t=shu(i,j,k);
printf("%f",t);
}
/////////////////////////////////////////
int hanshu(float a)
{
return (a*a-2);
}
/////////////////////////////////////////
float shu(float a,float b,int c)
{
int i;
float t;
t=(a+b)/2;
for(i=0;i<=c;i++)
{

t=(a+b)/2;
if(hanshu(t)*hanshu(b)<0)
{
t=(t+b)/2;
a=t;
}

if(hanshu(t)*hanshu(b)<0)
{
t=(t+a)/2;
b=t;
}

}
return t;
}
/////////////////////////////////////////

[解决办法]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void main()
{
float shu(float a,float b,int c);
int hanshu( float a);
int i,j,k;
float t;
printf("请输入一个界限,并输入它的迭代次数\n");
// scanf("%d,%d,%d",&i,&j,&k);
i=1.0;
j=2.0;
k=1000;
t=shu(i,j,k);
printf("%f",t);
system("pause");
}
/////////////////////////////////////////
float hanshu(float a)
{
return (a*a-2);
}
/////////////////////////////////////////
float shu(float a,float b,int c)
{
int i;
float t=0,val;

for(i=0;i<=c;i++)
{

t=(a+b)/2;
val =hanshu(t);
if(fabs(val)<1e-8)
break;

if(val>0)
b=t;
else
a=t;
}
return t;
}

读书人网 >C语言

热点推荐