該功能是y=x^2+2x+1
,域是從0到10.如果輸入間隔數,則程序將打印結果。完成該功能,MeasurationByDivision()
。按部門進行測量
我做了下面的C代碼,但我心中已經得到了真正錯誤的結果.. 我想我失去了一些東西錯了..
它應該是這樣的結果:
10
505.000000
35
460.612245
我的代碼:
#include <stdio.h>
#include <math.h>
void MeasurationByDivision(double* result, int intervals);
float f(float t) { return(pow(t,3) + 2); }
int main(void) {
int intervals ;
double result=0;
scanf("%d", &intervals) ;
MeasurationByDivision(&result, intervals) ;
printf("%lf\n", result) ;
fflush(stdin);
getchar();
}
void MeasurationByDivision(double* result, int intervals)
{
int i,a=0;
double x = 10/(double)intervals;
float y[100];
for(i=1; i<=intervals; i++) {
y[i]=a+i*x;
*result += x*f(y[i]);
}
}
此代碼的結果是:
10
3045.000000
感謝ü...我應該擺脫100陣列quickly..xD ..我只是編輯的代碼浮動F(浮動T){回報率((T + 1 )*(t + 1));但我得不到預期的結果:不是35 460.612245而是35 460.612239 ...應該是460.612245 ..爲什麼我得到這個結果? – anna 2013-05-05 17:31:58
這是因爲'float'不能準確表示所有數字。你得到可以表示的最接近的價值。 – 2013-05-05 17:34:41
其正確..謝謝你! :) – anna 2013-05-05 17:40:29