一道C++的题目:关于if转化switch的题目

读入X,由下面规律计算Y;X>0Y=1+X*XX=0Y=0X<0Y=10+X我用if做的如下:#include<iostream>usingnamespacestd;in... 读入X,由下面规律计算Y;
X>0 Y=1+X*X
X=0 Y=0
X<0 Y=10+X
我用if做的如下:
#include<iostream>
using namespace std;
int main()
{
int x,y;
cin>>x;
if(x>0)
{y=1+(x*x);
cout<<y;
}
if(x==0)
{y=0;
cout<<y;}
if(x<0)
{y=10+x;
cout<<y;}
system("pause");
return 0;
}

想转化用switch 和case做
做法如下:
#include<iostream>
using namespace std;
int main()
{
int x,y;
cin>>x;
switch(x);
{case x>0:y==x*x+1;
case x==0:y==0;
case x<0:y==10+x;
}
cout<<y;
system("pause");
return 0;
}
不懂哪错了,该怎么做?求高手给予指点
展开
 我来答
kwydwuf
2011-07-12 · TA获得超过7412个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2186万
展开全部
case 后面只能跟一个具体的值,而不是一个表达式,所以不行。看看我修改后的,利用 COMPARE宏来将 x > 0, x=0, x <0 分别转化成 三种值,即 1, 0, -1,这样就可以用case 了。
另1, case 后应该用 break语句。
另2, 赋值时,应该用=,而不是==

#include<iostream>
using namespace std;
#define COMPARE(i) (i > 0 ? 1 : (i == 0 ? 0 : -1))

int main()
{
int x,y;
cin>>x;
switch(COMPARE(x))
{
case 1: y=x*x+1; break;
case 0: y=0; break;
case -1: y=10+x; break;
}
cout<<y;
system("pause");
return 0;
}
妮儿____
2011-07-12 · TA获得超过311个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:276万
展开全部
。。题呢?
追问
在打呢
,现在出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式