求教c语言中switch 语句的详细用法

求大神指点... 求大神指点 展开
 我来答
硬件开发88
推荐于2018-02-14 · TA获得超过8675个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:591万
展开全部
switch 是一个开关语句,和case配套使用, 和if else 判断语句差不多, switch 语句是用于多分支语句进行条件判断,比如:

i++;
switch (i)
{
case 1 : P1 = 0xFE; //i =1; 执行P1 = 0XFE;
breK; //执行完成后跳出
case 2 : P1 = 0xFD; //i =2; 执行P1 = 0XFD;
break;
case 3 : P1 = 0xFB; //i =3; 执行P1 = 0XFB;
break;
case 4 : P1 = 0xF7 //i =4; 执行P1 = 0X7E;
break;
..........................................................................

default: break; //如果i 不符合以上条件直接跳出不执行任何东西
}

建议你还是先把C语言看熟把,书上都写的很清楚。
miniappbxPVzdL4liSay
2011-09-04 · 超过12用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:25.5万
展开全部
C语言程序语句switch:
  switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。
  switch语句的语法如下(switch,case和default是关键字):
  switch ( controllingExpression )
  {
  case constantExpression1 :
  case constantExpression2 :
  case constantExpression3 :
  statements; //当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
  break;
  case constantExpression :
  statements ;
  break;
  ...
  default :
  statements ;
  break;
  }
  遵守switch语句规则
  switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
  只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
  case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。
  case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
  C语言switch应用例子:
  例一:
  #include<stdio.h>
  int main()
  {
  double score;
  printf("请输入分数:\n");
  scanf("%lf",&score);
  switch((int)(score/10)) //如果写成witch((int)score/10)会出现严重错误
  {
  case 10:
  case 9:printf("A(最好)\n");break;
  case 8:printf("B(优秀)\n");break;
  case 7:printf("C(良好)\n");break;
  case 6:printf("D(及格)\n");break;
  case 5:
  case 4:
  case 3:
  case 2:
  case 1:
  case 0:printf("E(不及格)\n");break;
  default:printf("Error!\n");
  }
  }
  例二:
  #include<stdio.h>
  int main()
  {
  char rank;
  printf("请输入分数等级:(A、B、C、D、E)\n");
  scanf("%c",&rank);
  switch(rank)//switch((int)score/10)出现严重错误,switch(((int)score)/10)出现严重错误,
  {
  case 'A':printf("A(90~100)\n");break;
  case 'B':printf("B(80~89)\n");break;
  case 'C':printf("C(70~79)\n");break;
  case 'D':printf("D(60~69)\n");break;
  case 'E':printf("E(0~59)\n");break;
  default:printf("error!\n");break;
  }
  }
  例三:
  输入年月日,判断这一天是这一年的第几天。
  #include<stdio.h>
  int main()
  {
  int year,month,date,leap,days=0;
  scanf("%4d%2d%2d",&year,&month,&date);
  leap=(year%4==0&&year%100!=0||year%400==0);
  switch(month)
  {
  case 12:days+=30;
  case 11:days+=31;
  case 10:days+=30;
  case 9:days+=31;
  case 8:days+=31;
  case 7:days+=30;
  case 6:days+=31;
  case 5:days+=30;
  case 4:days+=31;
  case 3:days+=28+leap;
  case 2:days+=31;
  case 1:days+=date;break;
  }
  printf("%4d年%2d月%2d日是这一年的第%d天。\n",year,month,date,days);
  }
希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-04-07 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:970万
展开全部
这个是多分支时用到的
如果问题是有多个互拆的条件时,那么用这个最好
和多个if-else if--else实现的功能相同
如输出学生成绩的abcde分段,90-100为a,80-89为b,以此类推

注意的地方
1、条件必须互拆
2、case空格 符合的条件 冒号 处理 break
如 case 1: add();break;
如果不用break,那么会执行下面的case项
3、有default项,是都没有case处理的时候的,可以没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f511d0021
2013-04-06
知道答主
回答量:6
采纳率:0%
帮助的人:3.2万
展开全部
switch(a)
{
case 1:
break;
case 2:
break;
case 3:
break;
default:
}
不断判断是否符合各个case的值,如果符合,就执行后面的语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂润Q2
2013-04-06 · 超过13用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:25.1万
展开全部
switch(a)
{
case 1:

break;

case 2:

break;

case 3:

break;

default:

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式