一个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?太离谱了,球帮忙!
展开
 我来答
松甜恬0Je4ba
2013-03-23 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3505万
展开全部
是这样的原因:你的程序写的有问题。
若你输入 -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算。你看是按照那个算的吗?? 你修改的的程序什么样??
乘新之0i8
2013-03-23 · 超过14用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:30.8万
展开全部
你的问题出在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);}
希望能帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xpston008
2013-03-23 · TA获得超过365个赞
知道小有建树答主
回答量:367
采纳率:100%
帮助的人:349万
展开全部
if(x>=0||x<=10) 多执行了一次y的赋值。
if(x>=0&&x<=10)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1204b56
2013-03-23 · 超过16用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:38.8万
展开全部
sin()函数在C++中默认是弧度为单位,而你的-7.2是以度为单位,结果肯定不一样了,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式