首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

帮忙一下,该怎么解决

2012-04-26 
帮忙一下为什么得不到正确的答案,思路错在了那里?这个程序是用二分法求方程的根,我知道我程序设计的二分法

帮忙一下
为什么得不到正确的答案,思路错在了那里?这个程序是用二分法求方程的根,我知道我程序设计的二分法错了,可是不会改,求各位大侠帮忙
#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;
}

热点排行