已知sin函数计算公式为
模块化
模块化思路:将复杂问题的求解分解成若干个简单的问题,这些简单的问题称为模块。每个模块功能相对独立,且相互联系。这些模块相互作用可完成复杂问题的求解。问题分解时,要遵循高内聚、低耦合的基本思想。
问题分解:根据求sin函数值的公式可知,求解sin函数值主要由乘方、阶乘及求和等3个简单问题构成。问题分解及模块之间的联系如下:
模块设计:每个模块可接受多个值,可返回1个值,因此,每个模块可对应一个函数(即函数的形参可接受多个值,且可返回1个值)
程序实现
fac()模块的函数实现源码
long long int fac(int n)
{
if (1 == n)
return 1;
else
return n * fac(n - 1);
}
power()模块的函数实现源码
long double power(double a, int b)
{
long double sum = 1;
for (int i = 1; i <= b; i++)
{
sum *= a;
}
return sum;
sn()模块的函数实现源码
long double sn(double a, int b)
{
long double s;
s = power(a, b) / fac(b);
return s;
}
sinx()模块的函数实现源码
long double sinx(double x,int n) //n为项数,x为x的值
{
long double sum2 = 0.0;
int y = 1;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 1)
{
sum2 += sn(x, y);
}
else if (i % 2 == 0)
{
sum2 += -1 * sn(x, y);
}
y = y + 2;
}
return sum2;
}
main()模块的函数实现源码
int main()
{
int n;
double x;
long double k;
scanf_s("%lf%d", &x,&n);
k=sinx(x, n);
printf("%Lf", k);
}