如何拿switch语句当if语句用,bool表达式的赋值和运算

原创 2012年03月24日 20:33:30

对于这道题,如果用if语句,那谁都会做。但是现在要求只用switch语句实现,怎么办?

考虑到bool表达式可以取0和1。比如x<0这个表达式,可以将这个表达式赋给一个整型变量。

所以可以定义一个int flag变量,flag=1*(x<0)+2*(x>=0&&x<50)+3*(x>=50&&x<100)+4*(x>=100),当flag=1时,代表x<0为真,其他bool表达式均为假;x取2时,x>=10&&x<50为真,其他表达式均为假;以下类似。

实现代码如下:

#include <stdio.h>
int main()
{
int x, flag;
while(scanf("%d", &x) != EOF)
{
flag=1*(x<0)+2*(x>=0 && x<50)+3*(x>=50 && x<100)+4*(x>=100);
switch(flag)
{
case 1:
printf("%d\n", x);
break;
case 2:
printf("%d\n", 3*x-2);
break;
case 3:
printf("%d\n", 4*x+1);
break;
case 4:
printf("%d\n", 5*x);
break;
}
}
return 0;
}


从这个题目中我们知道了:布尔表达式是可以作为右值并可以进行运算的。


C基础:布尔类型(BOOL) 关系运算符 switch

C基础:布尔类型(BOOL) 关系运算符 switch
  • momohen
  • momohen
  • 2015年10月14日 14:18
  • 1172

正则表达式基本语法

1.正则表达式基本语法 两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以"The"开始的字符串("There","The ...
  • u013457022
  • u013457022
  • 2016年02月23日 14:27
  • 241

Swift之switch使用

Swift的switch语句比C语言的要强大很多。 Swift中switch语句的case语句不会“掉入”下一个case,避免了c语言忘记写break语句产生的错误。 case可以匹配许多不同的模式,...
  • u013346305
  • u013346305
  • 2015年12月01日 14:24
  • 215

Swift学习笔记(二十七)——条件语句和Switch-case语句

注意事项: (1)if后面的条件可以不加()括号,Swift推荐不使用括号。 (2)就算if-else后面的的执行语句只有一句话,也要使用{ }花括号,所以条件语句一定要使用括号。 (3)case后面...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年09月16日 12:04
  • 1814

“表达式必须包含 bool 类型(或可转换为 bool)”

在 boost::variant的原理及基本用法 ,我们知道想要获取variant 类型变量的内容,主要有apply_visitor和get两种方法,而get的一个显著的缺陷即是,当variant类型...
  • lanchunhui
  • lanchunhui
  • 2016年02月18日 14:57
  • 1645

if语句和switch语句的区别

if语句案例 import java.util.Scanner; public class Switch1{ public static void main(String[] args){ ...
  • zlcmanong
  • zlcmanong
  • 2017年05月17日 15:40
  • 334

Swift分支语句—switch语句

switch语句提供多分支的程序结构。Swift中的switch语句可以使用整数、浮点数、字符、字符 串和元组等类型,而且它的数值可以是离散的也可以是连续的范围。   下面我们先介绍一下swit...
  • bwf_erg
  • bwf_erg
  • 2017年04月17日 11:47
  • 248

Switch的实现

Switch的实现与If(){...}else if(){...}else{...}差不多,但又有区别,Switch语句中的逻辑比较多且有些乱,至少我是这样认为的。 在Switch中,有多个Ca...
  • hj714886063
  • hj714886063
  • 2011年11月14日 21:29
  • 640

switch语句和if语句的一些区别

/*if (firstkey == 43)                     {                         firstnum += secdnum;         ...
  • iking83
  • iking83
  • 2015年09月19日 22:29
  • 442

bool型变量的赋值和运算

今天在调试一个程序的时候出现bug,搜索两个小时,终于找出,其实bug很幼稚,主要是基础不扎实,根源在于如题所述:bool型变量的赋值和运算 废话不多说,直接上代码 模型是:bool flags ...
  • yueyingshaqiu01
  • yueyingshaqiu01
  • 2016年08月27日 10:36
  • 1486
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何拿switch语句当if语句用,bool表达式的赋值和运算
举报原因:
原因补充:

(最多只允许输入30个字)