1、当判断整数时
示例:判断整数范围
#include<stdio.h>
int main()
{
unsigned char buf[6]={0x00,0x07,0x11,0x60,0x61,0x66};
for(int i=0;i<6;i++)
switch(buf)
{
case 0x00...0x10:printf("buf[%d]is 0x0~0x10\n",i);break;
case 0x11...0x20:printf("buf[%d]is 0x11~0x20\n",i);break;
case 0x30...0x60:printf("buf[%d]is 0x30~0x60\n",i);break;
case 0x61...0xff:printf("buf[%d]is 0x61~0xff\n",i);break;
}
}
2、当判断字符时
示例:将"0x00"~"0xff"转化为数值0x00~0xff
#include<stdio.h>
int main()
{
char buf[6][6]={"0xff","0X02","0X1f","0xf1","0xa1","0Xb0"};
for(int i=0;i<6;i++)
if(buf[0]=='0'&&(buf[1]=='x'||buf[1]=='X'))//匹配前缀
{
unsigned char val=0;
int err=0;
for(int j=2;j<4;j++)
switch(buf[j])
{
case'0'...'9':val=val*16+(buf[j]-'0');break;
case'a'...'f':val=val*16+(buf[j]-'a'+10);break;
case'A'...'F':val=val*16+(buf[j]-'A'+10);break;
default:err=1;break;
}
if(!err)
printf("buf[%d]=0X%02X\n",i,val);
else
printf("buf[%d]ERR\n",i);
}
else
printf("buf[%d]ERR\n",i);
}
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
1、首先打开C-Free5.0,然后一个空白的C语言页面保存为switch.c文件,继续输入一般的C语言的基础格式。
2、C语言的输入语句,首先定义一个整型数值,然后从外面写入这个值。#include
3、要看下输入的值是不是赋值给了a,可以把a的值输出,如下图调试。从下图可以得出,a的值就是输入的值。
4、接着按照获得的值来执行相应的步骤,代码如下图。
5、从系统中输入一个数值,然后switch根据读到的数值判断应该做什么,注意,输入的值必须是定义的值,就比如本程序里面switch里面是一开始定义的a.int a;printf("请输入一个1-5之间的数值: ");scanf("%d",&a);switch (a){}调试下程序,看看对不对。
表示若干个范围,而且范围无规律,最好用条件语句,方便灵活。
-------------------
90以上是A,80到90是B,70到80是C 这种特殊情况,正好以10分为一档,所以它可以把分数除以10,凑成 9,8,7,6,....,于是可以用开关语句。
switch( make/10){
case 9: case 10: printf("A");break;
case 8: printf("B");break;
case 7: printf("C");break;
case 6: printf("D");break;
default: printf("E");break;
}
============
除以5的话
switch( make/5){
case 18: case 19: case 20: printf("A");break;
case 16: case 17: printf("B");break;
case 14: case 15: printf("C");break;
case 12: case 13: printf("D");break;
default: printf("E");break;
}
使用多个case叠加即可。比如下面的代码,当输入字符为+、a、或者大写字母A时,都可以调用f_add()。
#include
void f_add(void) {printf("execute + operation\n");}
void f_sub(void) {printf("execute - operation\n");}
void f_mul(void) {printf("execute * operation\n");}
void f_div(void) {printf("execute / operation\n");}
int main()
{
char ch;
scanf("%c", &ch);
switch (ch)
{
case '+':
case 'a':
case'A':
f_add(); break;
case '-':
case 's':
case 'S':
f_sub(); break;
case '*':
case 'm':
case 'M':
f_mul(); break;
case '/':
case 'd':
case 'D':
f_div(); break;
}
return 0;
}
#define Min1 5
#define Max1 15
#define Min2 15
#define Max2 20
void switch_range()
{
//方法① switch语句可以用…来判断范围,要注意其边界条件(且为包含)
switch(x)
{
case Min1 ... Max1: //等价于 5<=x && x<=15;
;
break;
case Min2 ... Max2: //等价于 15<=x && x<=20;
;
break;
default:
break;
}
//方法② 另一种常用方法是将其 “/5取商” 常量判断
int x;
switch(x/5)
{
case 1: //5-9
case 2: //10-14
printf("5-14");
break;
case 3: //15-19
printf("15-19");
break;
default:
;
break;
}
}