阅读下面程序,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。然后上机运行程序。
利用计算sin x(x为弧度值)的值,直到最后一项的绝对值小于10-5时为止,输出e的值并统计累加的项数。
#include <stdio.h>
#include <math.h>
int main()
{
int n = 1, count = 1;
float x;
double sum, term;
printf("Input x:");
scanf("%f",___①___);
sum = x;
term = x;
do{
term = ___②___;
sum = sum + term;
n = n + 2;
___③___;
}while (___④___);
printf("sin(x) = %.6f, count = %d\n", sum, count);
return 0;
}
①很容易填,根据上面的printf("Input x:"),即可知①为&x
我们先来看③,do{}whlie中为每次的迭代变化,而其中少了一个已经定义的变量count,又因为由题意可知count为项数计数,所以每次只增加1,得③ count=count+1
④为终止条件,题中已给出,所以写出题中所给条件即可
最后来看②,term为每次相加的项,观察找出每项与前一项的关系即可,发现每一项都在前一项的基础上乘了一个x的平方,又除以了其中n+1和n+2的积(即阶乘),最后,每一项的正负号不同。
所以把以上结合起来,最终填完空的代码为:
#include <stdio.h>
#include <math.h>
int main()
{
int n = 1, count = 1;
float x;
double sum, term;
printf("Input x:");
scanf("%f",&x);
sum = x;
term = x;
do{
term = (term*x*x)/((n+1)*(n+2))*(-1);
sum = sum + term;
n = n + 2;
count = count + 1;
}while (fabs(term)>1e-5);
printf("sin(x) = %.6f, count = %d\n", sum, count);
return 0;
}