
一道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;
}
不懂哪错了,该怎么做?求高手给予指点 展开
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;
}
不懂哪错了,该怎么做?求高手给予指点 展开
2个回答
展开全部
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;
}
另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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询