c语言中switch case怎么表示一个范围

之前我看到这个问题和解答比如给出一个分数,90以上是A,80到90是B,70到80是C。想用case语句。我弄了什么case90printf(''a'')好像不能表示一个... 之前我看到这个问题 和解答
比如给出一个分数,90以上是A,80到90是B,70到80是C。想用case语句。我弄了什么case90printf(''a'')好像不能表示一个范围。如果表示范围呢?目前只学了顺序结构和选择结构,没学深层的,希望不要写稍微高级的……谢谢

分享到:

举报| 2011-01-31 11:35提问者采纳
这个其实很简单,你可以转化一下,用分数除以10,那样就是一个范围啊,像这样score/10

然后问题就是 如果题目变成另一个的话 可是我还是得需要用到范围
是不是意思就是 我把原题中的已知常量比如n1 n2 n3....斗同时除以一个值 让它们变成单数 就可以满足
在n1和 n2之间的数也能 在case语句中表达出来?
简单点说我把局的那个例子 90以上是A,80到90是B,70到80是C
同时除以5的话 ‘如果我输入75 他也能正确输出?
展开
 我来答
问明6E
高粉答主

2019-05-31 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.7万
展开全部

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<i>)

{

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&lt;stdio.h&gt;

int main()

{

char buf[6][6]={"0xff","0X02","0X1f","0xf1","0xa1","0Xb0"};

for(int i=0;i&lt;6;i++)

if(buf<i>[0]=='0'&&(buf<i>[1]=='x'||buf<i>[1]=='X'))//匹配前缀

{

unsigned char val=0;

int err=0;

for(int j=2;j&lt;4;j++)

switch(buf<i>[j])

{

case'0'...'9':val=val*16+(buf<i>[j]-'0');break;

case'a'...'f':val=val*16+(buf<i>[j]-'a'+10);break;

case'A'...'F':val=val*16+(buf<i>[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&lt;文件名&gt;

2、#include"文件名"

电子数码小百科NW
2020-02-16 · TA获得超过6492个赞
知道答主
回答量:15
采纳率:0%
帮助的人:3928
展开全部

1、首先打开C-Free5.0,然后一个空白的C语言页面保存为switch.c文件,继续输入一般的C语言的基础格式。

2、C语言的输入语句,首先定义一个整型数值,然后从外面写入这个值。#include <stdio.h>main(){int a;printf("请输入一个1-5之间的数值: ");scanf("%d",&a);}这里的scanf() 就是从外面读入一个值给a。

3、要看下输入的值是不是赋值给了a,可以把a的值输出,如下图调试。从下图可以得出,a的值就是输入的值。

4、接着按照获得的值来执行相应的步骤,代码如下图。

5、从系统中输入一个数值,然后switch根据读到的数值判断应该做什么,注意,输入的值必须是定义的值,就比如本程序里面switch里面是一开始定义的a.int a;printf("请输入一个1-5之间的数值: ");scanf("%d",&a);switch (a){}调试下程序,看看对不对。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
推荐于2017-09-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5631万
展开全部
表示若干个范围,而且范围无规律,最好用条件语句,方便灵活。
-------------------
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;
}
更多追问追答
追问
对,我想知道的是,你看那个人提的问题如果,归成90  80  70.....铛的话,输入85就不能被识别,这是为什么,另如果除以一个数的话,对这个数有什么要求,就能使case1和case2之间的数也得以表达出来。。这样子表达,你能不能看懂??
追答
85/10  整型除以整型得整型  85/10 = 8
80/10 得8,
89 / 10 也得 8
它们都在 case 8: 一档里。
============
直接用 80, 90 :
85/10*10 = 80
89/10*10 = 80
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吉祥二进制
高粉答主

推荐于2017-10-01 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84576

向TA提问 私信TA
展开全部

使用多个case叠加即可。比如下面的代码,当输入字符为+、a、或者大写字母A时,都可以调用f_add()。

#include <stdio.h>
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝笔小鑫
2019-12-01 · 你没那么多观众,别那么累。
蓝笔小鑫
采纳数:61 获赞数:315

向TA提问 私信TA
展开全部
#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;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式