C程序出了两个错误 高手帮忙看一下

来源:百度知道 编辑:UC知道 时间:2024/06/27 08:18:16
#include <iostream>
#include <cmath>
using namespace std;

float f(float x)
{
return log(1+x)/(x*x);
}
float jifen(int k,float h,float a)
{
float j1=h*(f(a+k*h)+f(a+(k+1)*h))/2;
}
float jifen2(int k,float h,float a)
{
float j2=h*f(a+(k+1/2)*h)/2;
}

void main()
{
int i=0;
int n;
float a;
float b;
float h=(b-a)/n;
float t1=0;
float t2=0;
scanf("%d,%f,%f",&n,&a,&b);
while(! i)
{
for(int k=0;k<n;k++)
{
jifen(k,h,a);
jifen2(k,h,a);
t1+=j1;
t2+=j2;
}
t2+=t1/2;
if(fabs(t2-t1)<1e-7) i=1;
else
{
t1=t2;
n*=2;
h/=2;
}
}
printf("%d",t2);
}

编译的两个错误是:
C:\Program Files\Microsoft Visual Studio\MyProjects\4\4.cpp(83) :

帮你找到几个错误,不过不知道你的具体逻辑,所以逻辑错误就找不到了,都是语法的问题
1,函数的返回值,包括j1,j2的使用
2,输入输出问题
改过的在下面

#include <iostream>
#include <cmath>
using namespace std;

float f(float x)
{
return log(1+x)/(x*x);
}
float jifen(int k,float h,float a)
{
float j1=h*(f(a+k*h)+f(a+(k+1)*h))/2;
return j1;
}
float jifen2(int k,float h,float a)
{
float j2=h*f(a+(k+1/2)*h)/2;
return j2;
}

void main()
{
int i=0;
int n;
float a;
float b;
float h=(b-a)/n;
float t1=0;
float t2=0,t3=0;

scanf("%d",&n);
scanf("%f",&a);
scanf("%f",&b);
while(! i)
{
for(int k=0;k<n;k++)
{
float j1=jifen(k,h,a);
float j2=jifen2(k,h,a);
t1+=j1;
t2+=j2;
}
t2+=t1/2;
if(fabs(t2-t1)<1e-7) i=1;
else