int main()
{
float a, b, c, d, f, x
printf("请输入多项式系数a,b,c,d:")
scanf("%f%f%f%f", &a, &b, &c, &d)
printf("请输入变量x:")
scanf("%f", &x)
f = a * x * x * x + b * x * x + c * x + d
printf("f(x)=%f\n", f)
return 0
}
思路:因为这是个加法的多项式,用变量s累加,s的最初值是0,第1次向上加1!,第2次加2!,...,第n磁加n! s+=jc阶乘变量jc在循环中计算。
每项用循环变量i控制,第1次循环取值1,第2次循环取值2,...,第20次循环取值20,这个变量就是要求的阶乘数,i的值每次加1
阶乘是个累乘的运算,用变量jc,初始值是1,第1次向上乘以循环变量值1,就是1!,第2次是前边计算好的1!*2=2!,...,第20次就是19!*20=20!,jc*=i
由于20!数据比较大,对于32bit的int型变量存放不下,可以考虑用double型数据计算,省得溢出。
因此程序主体算法为:
int i
double s,jc
s=0jc=1
for ( i=1i<=20i++ ) { jc*=is+=jc}
printf("%lf\n",s)