//利用公式(泰勒公式)求sinx的近似值
#include <stdio.h>
#include <math.h>
int main()
{
printf("请输入角度:\n");
int i,j;
double x, sum = 0, k = 1, sum1;
//sum1 = 1;
scanf("%lf", &x);
x =3.1415926 * x / 180;//化为弧度
for (i = 1; i <= 100; i ++)
{
sum1 = 1;
for (j = 1; j <= 2 * i - 1; j++)
{
sum1 = sum1 * j;
} //计算分母阶乘
sum = sum + k * pow(x, 2 * i - 1) / sum1;
k = -k;
}
printf("sinx=%f\n", sum);
}
将 sum1 = 1
写在循环里边,每次循环都会重新将 sum1 的值改为 1,
将 sum1 = 1
写在循环外边,初始值赋值一次,后边直接使用上次得到的结果
严格来说应该是定义的问题,定义在for循环外是全局变量,定义在内部是局部变量,局部变量有他的作用范围,在定义的{}内有效,超过范围将变为无效值,全局变量的作用范围是整个程序结束