e = 1 + 1 / 1! + 1 / 2! + 1 / 3! +...+ 1 / n!
1 #include <stdio.h> 2 3 int main() { 4 float n, s; 5 int m, i; 6 7 printf("Input m:"); 8 scanf("%d", &m); 9 10 for (i = 1, n = 1.0f; i < m; i++){ 11 n *= i; 12 s += 1.0f / n; 13 } 14 printf("%f\n", s + 1); 15 16 return 0; 17 }
这里的 m 输入的是整数。
修改原程序,使得程序持续执加法运算,直到当前项小于 k 为止,其中 k 是用户输入的较小的浮点数:
#include <stdio.h> int main() { float n, s, k; int i; printf("Input k:"); scanf("%f", &k); for (i = 1, n = 1.0f; ; i++){ n *= i; s += 1.0f / n; if (1 / n < k) break; } printf("%f\n", s + 1); return 0; }