问答题
请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。
sum=1-x+x2/2!-x3/3!+…+(-1*x)n/n!
例如,当n=23,x=0.3时,函数值为0.740818。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
double proc(double x, int n)
{
}
void main()
{
system("CLS");
printf("%f", proc(0.3, 23));
}
【正确答案】
【答案解析】double proc(double x, int n)
{
int i, j=1;
double s=1.0, s1=1.0;
for(i=1; i<=n; i++)
{
j=-1*j; //j是控制其正负号的变化
s1=s1*i; //s1是控制其分母的变化
s=s+j*pow(x,i)/s1; //s是整个分数的和
}
return s; //最后把所得到的s返回到主函数中
}
[解析] 首先定义两个变量分别用来存储级数的和与每一项的分母。观察级数的特点,其每一项的正负号是交替变化的。根据这些特点,每增加一项都需要变换符号。最后求出级数的和。