求C语言帝帮助,c语言作业粗问题了 题目是sinx=x-x^3/3+x^5/5-x^7/7+..... x为弧度 要求写程序
我写的是:#include<stdio.h>#include<math.h>voidmain(){doublex,s,t;inti;printf("输入x(弧度)%%f\...
我写的是:#include<stdio.h>#include<math.h>void main(){double x,s,t;int i;printf("输入x(弧度)%%f\n");scanf("%f",&x);i=1;t=1;s=0;while(i<10){s+=t;i++;t=-1*t*x*x/(2*i+4*i*i);}printf("x的正弦值=%lf\n",s);}可是结果出来却是
求纠错,谢谢各位大神 展开
求纠错,谢谢各位大神 展开
展开全部
首先:scanf("%f",&x);输入格式不对,改为:scanf("%lf",&x);
其次,t的初值不对,应该是x而不是1;
最后,分母上阶乘的计算值不对,那行i++应该写到计算阶乘的后面,结果就正确了。
也就是说,以下这段代码:
scanf("%f",&x);
i=1;
t=1;
s=0;
while(i<10)
{
s+=t;
i++;
t=-1*t*x*x/(2*i+4*i*i);
}
printf("x的正弦值=%lf\n",s);
改为下面结果:
scanf("%lf",&x); 输入格式为lf
i=1;
t=x; 初值为x
s=0;
while(i<10)
{
s+=t;
t=-1*t*x*x/(2*i+4*i*i);
i++; 在计算分母的后面,否则上一行计算的结果不对
}
printf("x的正弦值=%lf\n",s);
这样结果就正确了。
其次,t的初值不对,应该是x而不是1;
最后,分母上阶乘的计算值不对,那行i++应该写到计算阶乘的后面,结果就正确了。
也就是说,以下这段代码:
scanf("%f",&x);
i=1;
t=1;
s=0;
while(i<10)
{
s+=t;
i++;
t=-1*t*x*x/(2*i+4*i*i);
}
printf("x的正弦值=%lf\n",s);
改为下面结果:
scanf("%lf",&x); 输入格式为lf
i=1;
t=x; 初值为x
s=0;
while(i<10)
{
s+=t;
t=-1*t*x*x/(2*i+4*i*i);
i++; 在计算分母的后面,否则上一行计算的结果不对
}
printf("x的正弦值=%lf\n",s);
这样结果就正确了。
追问
我改了,但是之后还是一样的情况
话说我之前的程序在别人的电脑上显示的出来,在自己的上面就粗线这种状况
改了之后也是,会不会是别的什么问题
追答
注意上面程序中的三个地方:
scanf中的lf格式;
t的初值为x;
i++应该我到循环的最后。
看你运行结果中的-1.#IND00,应该是变量i的初值设成0之后计算t时除数为0产生了溢出所致。
如果程序全都改过来了,确保程序已经成功保存,确保源程序已经重新编译和连接,确保生成了新的可执行程序,确保现在运行的是修改后的新版本的程序,就不会再出那种错误了。
最简单的做法是把所有的中间文件.obj和生成的可执行程序删除,然后再运行程序,肯定不会再有这种错误。
或者用以上代码新建一个程序文件,重新运行,应该就是一致的结果。
如果还有问题,把最新的出现问题的代码再贴一遍看看,怀疑以上贴出来的代码与exe文件不一致 。以上代码应该输出0,而不应该输出-1.#IND00。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询