展开式求和。输入一个实数x,计算并输出下式的值,直到最后一项的绝对值小于0.00001 (保留2 位小数)。要求定义和调用函数fact(n)计算n 的阶乘,可以调用pow()函数求幂。试编写相应程序。
s = x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……
/*
展开式求和
autho: a1bum
*/
#include<stdio.h>
#include<math.h>
double fact(int n);
int main(){
double x,sum = 0;
int n = 1;
printf("please input value of x: ");
scanf("%lf", &x);
while(true){
double var = pow(x, n)/fact(n);
sum += var;
if(var < 0.0001)
break;
n++;
}
printf("result is %.2lf ", sum);
return 0;
}
double fact(int n){
double result = 1;
for(int i=n;i>=2;i--){
result *= i;
}
return result;
}
感觉楼上这句写的十分巧妙
item = pow(x,j=i++)/fact(j) ;
#include <stdio.h> #include <math.h> double fact ( int n ) ; int main(void) { int i=1,j; double item, sum ; double x ; sum = 0 ; scanf ("%lf", &x) ; while (fabs(item)>=0.00001) //(调试时程序到这一步直接跳到第17行输出0.00) { item = pow(x,j=i++)/fact(j) ; sum += item ; printf ("%.2f\t%d\t%f\n",sum,j,item) ; } printf ("%.2f",sum) ; return 0 ; } double fact ( int n ) { int i; double result ; result = 1 ; for (i=1;i<=n;i++) result *= i ; return result ; }