所以我是C的新手,並且慢慢學習語法。但我遇到了一個問題。所以我想證明斯特靈公式其中斯特林逼近產生不同於預期的輸出
LN(N!)= N LN(N) - (N)
所以,當我使代碼中的打印語句來測試是否該陣列的每個元素產生數組的輸出是我想要的數字。它遠非如此。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double * natural_log();
/* Obtain the natural log of 0 to 100 and then store each value in an array */
double * approximation();
/* Use the sterling approximation caluculate the numbers from 0 - 100 and then store it in an array */
double * difference();
/* Calculate the difference between the arrays */
double * percentage();
/* Calculate the percentage of the difference and return the array */
int main() {
natural_log();
/* approximation(); */
return 0;
}
double * natural_log() {
static double natural_array[101]; /* set up the array */
int i; /* set up the integer to increase the array by a value */
natural_array[0] = 0.0; /* set up the first value in the array */
natural_array[1] = log(2);
double x;
x = natural_array [1];
for (i = 2; i <=100; i++) { /* set up the for loop to increment the i */
natural_array[i] = x + log(1 + i);
x = natural_array[i];
**printf ("Element[%d] = %d\n", i, x);**
}
return natural_array;
}
double * approximation() {
static double approximation_array[99]; /* set up the array */
int i; /* set up the integer to increase the array by a value */
for (i = 0; i <=100; i++) {
approximation_array[i] = (i) * log(i) - (i);
}
return approximation_array;
}
與打印語句以粗體它產生這樣的輸出
Element[2] = 688
Element[3] = 2048
Element[4] = 1232
Element[5] = 688
.....
.....
Element[100] = 544
我敢肯定,這些都是它不應該在輸出被吐出這樣任何人都可以解釋爲什麼這是一個數字?謝謝!
'natural_array [99];'必須有'101'元素可以通過'100'索引,作爲一個問題。 – 2015-04-01 15:10:19
你的數組有99個元素,索引爲0到98.你的循環上溯到索引100,它是元素101.索引超出界限導致[*未定義行爲*](http://en.wikipedia.org/wiki/ Undefined_behavior)。 – 2015-04-01 15:10:24