一个c++的简单问题,求解释
#include<iostream.h>#include<math.h>intmain(){doublex,y;cin>>x;if(x<0){y=x*x+(2/x)+si...
#include <iostream.h>
#include <math.h>
int main()
{
double x,y;
cin>>x;
if(x<0){y=x*x+(2/x)+sin(x);} //这行有问题
if(x>=0||x<=10){y=2*x*x*x*x*x-cos(x);}
if(x>=10){1/(sqrt(3*x*x-11));}
cout<<y;
return 0;
}
当输入:-7.2时,应该输出:50.7686,为什么我执行后输出的是-38699?太离谱了,球帮忙! 展开
#include <math.h>
int main()
{
double x,y;
cin>>x;
if(x<0){y=x*x+(2/x)+sin(x);} //这行有问题
if(x>=0||x<=10){y=2*x*x*x*x*x-cos(x);}
if(x>=10){1/(sqrt(3*x*x-11));}
cout<<y;
return 0;
}
当输入:-7.2时,应该输出:50.7686,为什么我执行后输出的是-38699?太离谱了,球帮忙! 展开
4个回答
展开全部
是这样的原因:你的程序写的有问题。
若你输入 -7.2 满足第一个if,那也满足第二个if啊,-7.2<10成立吧, ||是只要有一个成立,就成立,所以你输出的是第二个if的计算结果,
另外,第三个if是什么意思??
#include <iostream.h>
#include <math.h>
int main()
{
double x,y;
cin>>x;
if(x<0){y=x*x+(2/x)+sin(x);} //这行有问题
else if(x>=0 && x<=10){y=2*x*x*x*x*x-cos(x);} //&&两个条件都满足才行
else if(x>=10){ y=1/(sqrt(3*x*x-11));}
cout<<y;
return 0;
}
若你输入 -7.2 满足第一个if,那也满足第二个if啊,-7.2<10成立吧, ||是只要有一个成立,就成立,所以你输出的是第二个if的计算结果,
另外,第三个if是什么意思??
#include <iostream.h>
#include <math.h>
int main()
{
double x,y;
cin>>x;
if(x<0){y=x*x+(2/x)+sin(x);} //这行有问题
else if(x>=0 && x<=10){y=2*x*x*x*x*x-cos(x);} //&&两个条件都满足才行
else if(x>=10){ y=1/(sqrt(3*x*x-11));}
cout<<y;
return 0;
}
更多追问追答
追问
我把 || 当成‘且’运算了。这个程序是用来计算分段函数的
当输入:15.9时,应该输出:0.0365776,为什么我的输出 -1.07374e+008 ? 看起来简简单单的程序,做起来这么多麻烦,蛋都快碎了
追答
我不知道你的算法是否正确。
你输入 15.9 应该按照 x>=10算。你看是按照那个算的吗?? 你修改的的程序什么样??
展开全部
你的问题出在if(x>=0||x<=10){y=2*x*x*x*x*x-cos(x);}这一行了,你输入-7.2的时候,也满足(x>=0||x<=10)这个条件,所以执行了后面的y=2*x*x*x*x*x-cos(x),结果就成-38699了。
我猜你这儿应该是 if(x>=0 && x<=10){y=2*x*x*x*x*x-cos(x);}
希望能帮到你。
我猜你这儿应该是 if(x>=0 && x<=10){y=2*x*x*x*x*x-cos(x);}
希望能帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(x>=0||x<=10) 多执行了一次y的赋值。
if(x>=0&&x<=10)
if(x>=0&&x<=10)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sin()函数在C++中默认是弧度为单位,而你的-7.2是以度为单位,结果肯定不一样了,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询