看下四种选结构的算法是否正确
我正在自学计算级等级考试C语言,下面是p49的一道题,请大学检测我做的结果那此不够好的。对于以下函数
x(-5<x<0)
y= x-1(x=0)
x+1(0<x<10)
编写程序,要求输入x的值,输出y的值,分别用:
(1)不嵌套的if语句 (2)嵌套的if语句
(3)if-else 语句 (4) switch语句
我做的答案
(1)不嵌套的if语句
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0) y=x;
if(x==0) y=x-1;
if(x>0&&x<10) y=x+1;
printf("y=%d\n",y);
getch();
}
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0) y=x;
if(x==0) y=x-1;
if(x>0&&x<10) y=x+1;
printf("y=%d\n",y);
getch();
}
2.嵌套的if语句
main()
{
int x,y;
scanf("%d",&x);
if (x>-5)
{if (x<0) y=x;}
if (x==0) y=x-1;
if (x>0)
{if (x<10) y=x+1;}
printf("%d\n",y);
getch();
}
{
int x,y;
scanf("%d",&x);
if (x>-5)
{if (x<0) y=x;}
if (x==0) y=x-1;
if (x>0)
{if (x<10) y=x+1;}
printf("%d\n",y);
getch();
}
3.if-else语句
main()
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0) y=x;
else if(x==0) y=x-1;
else if(x>0&&x<10) y=x+1;
printf("y=%d\n",y);
getch();
}
{
int x,y;
scanf("%d",&x);
if(x>-5&&x<0) y=x;
else if(x==0) y=x-1;
else if(x>0&&x<10) y=x+1;
printf("y=%d\n",y);
getch();
}
4. switch语句
main()
{
int x,y;
scanf("%d",&x);
switch(x>=0)
{ case 0: y=x;break;
case 1:
{switch(x>0)
{ case 0: y=x-1;break;
case 1: y=x+1;break;
}
}
}
printf("y=%d\n",y);
getch();
}
{
int x,y;
scanf("%d",&x);
switch(x>=0)
{ case 0: y=x;break;
case 1:
{switch(x>0)
{ case 0: y=x-1;break;
case 1: y=x+1;break;
}
}
}
printf("y=%d\n",y);
getch();
}
感觉最后一个switch有点难,关键是用是作条件来判断,我不得不用switch嵌套来做这个题,感觉很烦琐。
欢迎大家给出指导意见。