# C習題3-46-c
###### tags: `C習題`
## 題目:
> 寫一個程式計算e^x值
## code:
```c=
#include <stdio.h>
int main()
{
int n = 1, k = 1; /*n to store n! value, e to store exp value, k as counter*/
double e =1,x;
float xm;
printf("Input x value to calc e^x :\n");
scanf("%lf",&x);
xm = x ;
while( k <= 12 ) {
n = n * k ;
printf("n = %d\n",n);
/*printf("1/n = %f\n", (float) 1/n);*/
printf("x before = %lf\n",x);
e = e + ((float) x / n ) ; /*int to float transfer, otherwise below decible will not add in*/
printf("e = %.6lf\n",e);
x = xm * x ;
printf("x after = %lf\n",x);
k = k + 1 ;
printf("k = %d\n", k);
}
printf("e^x value = %.6lf\n",e);
return 0;
}
```
## 心得
> 重複結構設定只跑12次, 結果如下
> x = 1 value = 2.718282 ; 計算機按出:2.718281
> x = 2 value = 7.389055 ; 計算機按出:7.389056
> x = 3 value = 20.085213; 計算機按出:20.085536
> x = 4 value = 54.583207; 計算機按出:54.598150
> x = 5 value = 148.113534; 計算機按出:148.413159
1. 寫出程式與計算機結果在指數值越大則差越多,
2. 當x 值越大或重複結構次數越多, 會遇到值溢位問題...
3. 宣告的種類沒有特別想, 只想著把足夠記憶體開足
4. 這題拿e的來改, 只加入x的敘述而已; xm用來記錄剛輸入的指數初始值