C语言程序设计(第三版)何钦铭著 习题4-2
题目
展开式求和。
输入一个实数x,
计算并输出下式的和,
直到最后一项的绝对值小于0.000 01,计算结果保留2位小数。
要求定义和调用函数 fact(n)计算n的阶乘,可以调用 pow () 函数求幂。
试编写相应程序。
分析过程
输入
条件:输入一个实数x
输出
条件:计算并输出下式的和,
直到最后一项的绝对值小于0.000 01,计算结果保留2位小数。
代码
#include <stdio.h>
#include <math.h>
double fact(int n);/*声明函数,计算阶乘*/
int main () {
/*定义变量*/
double x; /*定义变量,存储输入的x*/
double m; /*定义变量,计算每一项值*/
double sum = 1.0; /*定义变量,计算结果和,初值为1*/
/*赋值*/
printf("请输入x:\n"); /*输入提示*/
scanf("%lf \n", &x); /*输入并赋给变量*/
/*计算*/
for(int i=1 ; ; i++){
/*直到最后一项的绝对值小于0.000 01结束计算,即每项绝对值必须大于0.000 01*/
m = pow(x, i)/ fact(i);
sum = sum + m;
if(fabs(m)< 0.00001) break;
}
printf("%lf和为:%.4lf \n", x, sum); /*输出计算结果*/
return 0;
}
double fact(int n){
double sum=1.0; /*定义变量,存储阶乘和*/
for(int i=1;i<=n;i++){
/*循环遍历,将每个元素乘到sum上*/
sum *=i;
}
return sum;
}