为什么会陷入死循环
#include <stdio.h>#include <stdlib.h>
#include <math.h>
int main()
{
float x;
float sum=0,term;
int n=0;
printf("请输入一个x值(弧度值):");
scanf("%f",&x);
//补充代码,如果还需要变量,则自己多定义几个。
//x的绝对值小于1e-6可以表示为 fabs(x)<1e-6
/********************Begin********************/
int d,c,b,z=1;
float w=x;
for(b=1;b<1000;b++){
c=2*b-1;
x = w;
z = 1;
for(d=1;d<=c;d++){
x *= x;
if(d=1){
x = x/w;
}
}
for(d=1;d<=c;d++){
z *= d;
}
if(b%2==0){
term = x/z*(-1.0);
}
else{
term = 1.0*x/z;
}
printf("%d ",z);
sum += term;
if(fabs(term)<1e-6){
break;
}
}
/*******************End*********************/
printf("\nsin(%.2f) = %.2f\n",w,sum);
return 0;
}
在你的代码中,有一行代码if(d=1) ,这个条件语句应该是if(d==1) ,因为=是赋值操作符,而==才是比较操作符。由于if(d=1)中的赋值操作会使得d的值始终为1,所以导致了无限循环,即陷入了死循环。
你需要将if(d=1)改为if(d==1) ,这样就可以解决死循环的问题。
页:
[1]