刚学习到这里。
需要输出的是:当x<0时,输出f(x)=-1.以此类推
#include <stdio.h>
int main()
{
int x=0;
scanf("%d",&x);
switch(x<0)
{
case 1:
printf("f=%d\n",-1);
break;
case 0:
switch(x==0){
case 1:
printf("f=%d\n",0);
break;
case 0:
printf("f=%d\n",2*x);
break;
}
default:
printf("请重新输入");
break;
}
getchar();
return 0;
}
switch并不适用这样的分支判断
switch只适用变量等于某一值的判断,不适用大于或小于的判断,
这种判断应该用 if .... else if .... else ....
一定要用switch可以这样
#include <stdio.h>
int main()
{
int x=0;
scanf("%d",&x);
switch(x<0?-1:x>0?1:0)
{
case -1:
printf("f=%d\n",-1);
break;
case 0:
printf("f=%d\n",0);
break;
case 1:
printf("f=%d\n",2*x);
break;
}
getchar();
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
修改如下,供参考:
#include <stdio.h>
int main()
{
int x=0;
scanf("%d",&x);
switch(1*(x < 0) + 2* (x == 0) + 3*(x > 0))
{
case 1:
printf("f=%d\n",-1);
break;
case 2:
printf("f=%d\n",0);
break;
case 3:
printf("f=%d\n",2*x);
break;
default:
break;
}
return 0;
}
为什么我跑了一下没什么问题
switch函数里面不能放入表达式,你需要先用另外一个参数来接受这个表达式的结果
//NO.8
#include <stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
int a = (x < 0);
//printf("%d\n", a);
switch (a)
{
case 1:
printf("f=%d\n", -1);
break;
case 0:
int c = (x == 0);
switch (c)
{
case 1:
printf("f=%d\n", 0);
break;
case 0:
printf("f=%d\n", 2 * x);
break;
}
break;//这里少了一个break
default:
printf("请重新输入");
break;
}
getchar();
return 0;
}
这样就能正常判断了!
VS编译器会报警告,但是程序是能跑的。主要问题还是少那个break
switch后面加入的是数据,case才是条件。你这个用一个switch就行。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!