switch用法举例:
switch语句流程图_switch语句简单例子
switch语句流程图_switch语句简单例子
switch语句流程图_switch语句简单例子
int main(){
int a;
printf("Input integer number:");
scanf("%d",&a);
switch(a){
case 1: printf("Monday
case 2: printf("Tuesday
case 3: printf("Wednesday
case 4: printf("Thursday
case 5: printf("Friday
case 6: printf("Saturday
case 7: printf("Sunday
default:printf("error
}return 0;
}运行结果:
Input integer number:4↙
Thursday
解析:
2、case后面的常量表达式只能是整型、字符型或枚举型常量的一种语句,结束后一定要带break,不然还会继续执行下一个case。
遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
switch()的参数类型不能为实型 。
case标签必须是常量表达式(constantExpression),如42或者'4'。
case标签必须是性的表达式;也就是说,不允许两个case具有相同的值。
C语言程序语句switch:
}}switch语句的语法如下(switch,case和default是关键字):
switch ( controllingExpression )
{case constantExpression1 :
case constantExpression2 :
case constantExpression3 :
statements; //当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
case constantExpression :
statements ;
...
default :
statements ;
}遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
C语言switch应用例子:
例一:
#include
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
int main()
{char rank;
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
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);
}希望对你有帮助。
这个是多分支时用到的
如果问题是有多个互拆的条件时,那么用这个
和多个if-else if--else实现的功能相同
如输出学生成绩的abcde分段,90-100为a,80-89为b,以此类推
注意的地方
1、条件必须互拆
2、case空格 符合的条件 冒号 处理 break
如 case 1: add();break;
如果不用break,那么会执行下面的case项
3、有default项,是都没有case处理的时候的,可以没有
switch(a)
case 2:
case 3:
default:
}不断判断是否符合各个case的值,如果符合,就执行后面的语句
switch(a)
case 2:
case 3:
default:
}
Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。直线翻译: switch语句,即“切换”语句;case即“情况”。
扩展资料
switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个case语句中的值和switch表达式的值匹配时 php 才开始执行语句,直到switch 的程序段结束或者遇到个break语句为止。如果不在case的语句段写上break的话,php将继续执行下一个case中的语句段。
在switch语句中条件只求值一次并用来和每个case语句比较。在elseif语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用switch语句可能会快一些。
switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。
在C#中,switch语句的控制表达式只能是某个整形(int,char,long等)或string。其他任何类型(包括float和double类型)只能用if语句。
每个constantExpression值都必须,使controllingExpression只能与它们中的一个匹配。如果controllingExpression的值和任何controllingExpression的值都不匹配,也没有default标签,程序就从switch的结束大括号之后的个语句继续执行。
在Ja中有一个与if-else作用相似的东西,那就是switch-case。
举个例子:
要根据学生的成绩等级,判断学生的成绩范围。我们规定 A 等级 代表 90~100 分,B 等级代表 80~89 分,C 等级代表 70~79 分,D 等级代表 60~69 分,E 等级代表 0~59 分,如果是 A~E 以外的字母,用 Unknown ll 表示。
public class Solution {
public String getRange(String ll) {
String str="";
// write your code here
switch(ll){
case "A":
str = "90~100";
case "B":
str = "80~89";
case "C":
str = "70~79";
case "D":
str = "60~69";
case "E":
sprintf("2tr = "0~59";
default:scanf("%ld",&i);
str = "Unknown ll";
}return str;
switch ,开关控制语句,一般形式:
扩展资料:switch (表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…case 常量表达式n: 语句n;
default: 语句n+1;
}其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
int main(void){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Monday
case 3:printf("Wednesday
case 4:printf("Thursday
case 5:printf("Friday
case 6:printf("Saturday
case 7:printf("Sunday
default:printf("error
}return 0;
}本程序是要求输入一个数字,输出一个英文单词。但是当输入3之后,却执行了case3以及以后的所有语句,输出了Wednesday 及以后的所有单词。这当然是不希望的。为什么会出现这种情况呢?这恰恰反应了switch语句的一个特点。在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 这是与前面介绍的if语句完全不同的,应特别注意。
为了避免上述情况,C语言还提供了一种break语句,可用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。修改例题的程序,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
int main(void){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Monday
"); break;
"); break;
case 3:printf("Wednesday
"); break;
case 4:printf("Thursday
"); break;
case 5:printf("Friday
"); break;
case 6:printf("Saturday
"); break;
case 7:printf("Sunday
"); break;
default:printf("error
}return 0;
}在使用switch语句时还应注意以下几点:
在case后的各常量表达式的值不能相同,否则会出现错误。
在case后,允许有多个语句,可以不用{}括起来。
各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
default子句可以省略不用。
1、Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。直线翻译:switch语句,即“切换”语句;case即“情况”。
2、switch语句的语法如下(printf("85-100n");switch,case和default是关键字):
switch ( 常量表达式 )
{case 常量1 :语句;
case 常量2 :语句;
case 常量3 :语句;
...
case 常量n:语句;
default :语句;
}扩展资料:
具体特点说明:
1、switch 后面括号内的“表达式”必须是整数类型。也就是说可以是 int 型变量、char 型变量,也可以直接是整数或字符常量,哪怕是负数都可以。但不可以是实数,float 型变量、double 型变量、小数常量通通不行,全部都是语法错误。
2、switch 下的 case 和 default 必须用一对大括号{}括起来。当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。
3、执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。
4、再重申一下:switch是“选择”语句,不是“循环”语句。很多新手看到break就以为是循环语句,因为break一般给我们的印象都是跳出“循环”,但break还有一个用法,就是跳出switch。
5、若所有的 case 中的常量表达式的值都没有与 switch 后面括号内“表达式”的值相等的,就执行 default 后面的语句,default 是“默认”的意思。如果 default 是一条语句的话,那么其后就可以不加 break,因为既然已经是一句了,则执行完后自然就退出 switch 了。
6、每个 case 后面“常量表达式”的值必须互不相同,否则就会出现互相矛盾的现象,而且这样写造成语法错误。
7、“case常量表达式”只是起语句标号的作用,并不是在该处进行判断。在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
8、各个 case 和 default 的出现次序不影响执行结果。但从阅读的角度是按字母或数字的顺序写。
9、当然你也可以不要 default 语句,就跟 if…else 不要 else 语句一样。但是加上,后面可以什么都不写。这样可以避免别人误以为你忘了进行 default 处理,而且可以提醒别人 switch 到此结束了。
例:判断一周的食谱,就是星期几的食谱是什么,首先一个星期7天,那么判断七次,用switch语句写法如下:
复合语句#include
void main()
int a;//定义变量用于开辟1到7的数字即一星期的天数。
printf("看看星期几的食谱是什么?");
scanf("%d",&a);
switch(a)//开始判断1-7的食谱。
{case 1:printf("星期一吃水果
case 2:printf("星期二吃蔬菜
case 3:printf("星期三吃火锅
case 4:printf("星期四吃米饭
case 5:printf("星期五吃西餐
case 6:printf("星期六吃米饭
case 7:printf("星期天吃满汉全席
default:printf("请输入正确的日期
}扩展资料
if 语句:“如果”语句;if—else 语句:“若…(则)…否则…”语句;switch 语句:“切换”语句;switch—case:“切换—情况”语句。
跳转结构
return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。(K&R时期引入)
break:跳出当前循环或switch结构。(K&R时期引入)
goto:无条件跳转语句。(K&R时期引入)
分支结构
if:条件语句,后面不需要放分号。(K&R时期引入)
else:条件语句否定分支(与if连用)。(K&R时期引入)
switch:开关语句(多重分支语句)。(K&R时期引入)
case:开关语句中的分支标记,与switch连用。(K&R时期引入)
default:开关语句中的“其他”分支,可选。(K&R时期引入)
参考资料:
main()
{long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
bonus1=1000000.1;bonus2=bonus1+1000000.75;
bonus4=bonus2+2000000.5;
bonus6=bonus4+2000000.3;
bonus10=bonus6+4000000.15;
if(i<=100000)
bonus=i0.1;
else ifbreak;(i<=200000)
bonus=bonus1+(i-100000)0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)0.015;
else
bonus=bonus10+(i-1000000)0.01;
printf("bo{case 1:nus=%d",bonus);
}来的。。C语言算法100例中的一道题。。。
根据这个思路可以写SWITCH语句。。。
switch(dat)//dat为变量
#include{case 0: call_0(); break;//当变量值=0时,调用call_0();函数,跳出
case 1: call_1(); break;//当变量值=1时,调用call_1();函数,跳出
................................
case n: call_n(); break;//当变量值=n时,,调用call_n();函数,跳出
default: break;//默认值,跳出
}
C语言程序语句switch语句的语法如下(switch,case和default是关键字):
switch ( controllingExpression )
{case constantExpression1 :
case constantExpression2 :
case constantExpression3 :
statements;
//当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
case constantExpression :
statements ;
...
default :
statements ;
}扩展资料:
Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以C语言来说,switch(开关语句)常和case break default一起使用。
遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
switch()的参数类型不能为实型 。
case标签必须是常量表达式(constantExpression),如42或者'4'。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
参考资料来源:
凡是使用过的人都会有同样的感觉——C语言的使用灵活这个特点既是优点又是缺点, 因为对精通C语言的用户来讲, 灵活就意味着编程可以无拘无束, 甚至随心所欲; 但对初学者或者是尚未摸着规律的用户来说, 有时候就会觉得C程序设计有点象雾里看花, 摸不着头脑。 因为灵活就意味着没有一个标准。 而实际上,C 语言和其它计算机语言一样, 只要你真正掌握了该语言的每一个语句的特点, 理解、 运用就不难掌握了。 下面就C语言中switch 语句的使用特点谈谈自己的体会。 ---- switch 语句的格式如下: switch( 表达式) {case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式3: 语句3 case 常量表达式n: 语句n default : 语句n+1 } ---- 从表面上看来,switch 语句与PASCAL 语言中的case 语句以及FOXBASE 中的do case 语句非常类似, 只是关键字有所不同: 一个是switch; 而另一个是case 或do case。 但如果仔细阅读过教材或有关参考书的话, 就绝不会有此想法。 从语句的功能上来看,PASCAL 和case 语句或FOXBASE 的do case 语句中的常量表达式是用来与case 后面的表达式比较以确定执行哪一个语句, 一旦执行了某一语句, 则会自动地结束这一case 后的语句; 而C 的switch 语句则不然。 首先,switch 语句中的常量表达式只是起到一个入口作用, 一旦执行了相应的语句后, 只要没有中断语句(break),它就会一直按顺序继续执行下去, 也就是会执行其它case 后面的语句, 直到遇到“}” 符号才停止。 乍看觉得有点不可事议, 但若仔细回味且切身编程体会, 那么就会感司到C的switch 语句的独到之处。 接下来就几个具体例子来剖析:switch 语句的特点以及区别于其它语言中的相应语句的妙处。 ---- 个例子: 根据输入的百分制成绩, 然后给出‘A’ ~‘E’ 相应的等级符(90-100 为‘A’、80-89 为‘B’、70-79 为‘B’、60-69 为‘C’、0-59 为‘E’)。主要的处理程序段如下:(temp、score、grade 皆为整型变量) temp=score/10; switch(temp) {case 9:grade=‘A’; case 8:grade=‘B’; case 7:grade=‘C’; case 6:grade=‘D’; case 5:grade=‘E’; } printf(“the grade is %c”,grade); ---- 仔细阅读这段程序( 根据C语言的特点),就会发现有很多错误。 首先, 对100 分和低于50 分的情况没有考虑; 其次,C 语言的switch 特点是顺序执行, 那么这段程序不输入的分数如何, 的输出都将是‘E’。因此, 修改这段程序, 可以得到一个正确是: temp=score/10; switch(temp) {case 10: case 9:grade=‘A’;break; case 8:grade=‘B’;break; case 7:grade=‘C’;break; case 6:grade=‘D’;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=‘E’; } printf(“the grade is %c,grade”); ---- 但这么一个结果还不算是一个好的C程序, 因为它只是能得到正确的解, 没有真正用到C的特点。 如果将C的特点运用到这段程序中, 则程序将优化成如下: grade=‘A’; temp=score/10; switch(temp) {case 0: case 1: case 2: case 3: case 4: case 5:grade++; case 6:grade++; case 7:grade++; case 8:grade++; case 9: case 10: } printf(“the grade is %c,grade”); ---- 从这段程序中, 我们可以体会到前面所说的该语句的特点。 ---- 第二个例子: 运输公司对用户计算运费。 距离(s) 越远, 每公里运费越低。 具体标准如下: s < (km) 没有折扣 < =s < 500 (km) 2% 折扣 500 < =s < 1000 (km) 5% 折扣 1000 < =s < 2000(km) 8% 折扣 2000 < =s < 3000(km) 10% 折扣 3000 < =s (km) 15% 折扣 ---- 设每公里每吨货物的基本运费为p, 货物重为w, 距离为s, 折扣为d, 则总运费计算公式为: ---- f=pws(1-d) ---- 分析此问题, 折扣的变化是有规律的: 折扣的“ 变化点” 都是 的倍数(,500,1000,2000,3000)。利用这一特点, 可以再设一变量c, 它代表 的倍数。 当c<1 时, 无折扣;1<=c<2 时, 折扣为d=2%;2<=c<4 时,d=5%;4<=c<8 时,d=8%;8<=c<12 时,d=10%; c>=12 时,d=15%。 所以可以有如下没有错误的程序段: scanf(“%f,%f,%d”,&p,&w,&s); if(s>=3000)c=12 else c=s/ switch(c) {case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15; } f=pws(1-d/100.0); printf(“freight%15.f”,f); ---- 如同前一个题目, 这个程序段也完全可以利用switch 特点, 改进优化得到如下程序段: d=0 scanf(“%f,%f,%k”,&p,&w,&s); if(s>=3000)c=12 else c=s/ switch(c) {case 12:d+=5; case11: case 10: case 9: case 8:d+=2; case 7: case 6: case 5: case 4:d+=3; case 3: case 2:d+=3; case 1:d+=2; case 0: } f=pws(1-d/100.0); printf(“freight%15.4f”,f); ---- 从上面两个例子分析, 使我们可以比较清楚地看见C语言中switch 语句与其它语言中相应语句的区别。 尽管在学习和教计算机语言的过程中, 我们始终认为语言是相通的, 这样便于学习一门新的语言。 但是真正要把某一门计算机语言学好, 非得掌握它的特点。 ---- 这里仅仅是自己在编程实践过程中的一点体会, 有错误的地方恳请批评指正。 希望对你有帮助!
case (c>=90 && c<=100):
case后面的必须是一个常量。
你这个可以先将成绩除以10,再用switch
#include "stdio.h"
void main()
{char c; /这里别用char,改成:int c,d;/
scanf("%c",&c); /这一句也改成scanf("%d",&c);前面再加一句,printf("请输入成绩:"); 在这句后面加一句d=c/10;/
switch(c) /然后switch里面用d来判断,switch(d)/
{case (c>=90 && c<=100):printf("成绩的等级为:A.n");
break; /改成: case (10):
case (9):printf("成绩的等级为:A.n");break;
case (c>=80 && c<=89):printf("成绩的等级为:B.n");
break; /改成:case (8):printf("成绩的等级为:B.n"); break;
因为90到100之间的数经过除以10再取整以后就变成了9;100/10等于10,又因为case调用同一个语句的时候允许就在一个语句写上那个语句,而将前面的那几个省略掉,所以case (10):后面的就省掉了,当然写上也不会错。
你的补充的那个,你可以把它分开表示,就像我给你弄的那个case (c>=90 && c<=100):printf("成绩的等级为:A.n");
break; /改成: case (10):
case (9):printf("成绩的等级为:A.n");break;
虽然有点纠缠不清的感觉,但是希望对解决你的疑问有一定的帮助,呵呵。。。
执行case 2是因为在switch (x) 中x=1,所以执行case 1,然而case 1 这条语句没有break,所以switch (x)在执行了case 1之后将继续往下依次执行case语句,直到碰到break就跳出switch 循环。
对于“a的自加是先执行后在自加,当此程序a自加的时候没有执行其他语句啊?????? ” 则是你没看到程序中的语句a++,b++它自加完了以后把值任然是赋值给a,b本身的,而不是赋值给其他变量例如c=a++;z=b++。如果是这样赋值给别的变量的话那么就很明确了c,z的值将和课本上说得一样都是自加以前的值 。也就是说这个程序当中printf输出的是a,b的值,但是a,b在自加过程中值都变化了,就是说相当于语句a=a++,b=b++.
我将你的程序进行了更改,你将两个程序都运行下然后再对照着看一下就明白为什么a,b的值是2和1了,程序如下
main()
{int x=1,y=0,a=0,b=0,c=0,z=0;
switch (x)
switch(y)
{case 0:c=a++;break;
case 1:b++;break;
}case 2: c=a++,z=b++;break;
case 3:a++,b++;
}printf("c=%d,z=%dn",c,z) ;
}对于 ++i 和i++ 有什么区别?
简单而言: ++i在i 存储的值上增加一并向使用它的表达式“返回” 新的, 增加后的值; 而i++ 对i增加一, 但返回原来的是未增加的值。
语法:
switch(val)
{case x:
//程序段1
case y:
//程序段2
case z:
//程序段3
default:
//程序段4
}首先,程序会用val的值与 x,y,z的值进行比较,如果等于其中某一个值,则程序跳转至该case执行程序,执行完后退出switch语句。例如等于x,则程序跳转到程序段2,然后退出switch。如果所有的case值都不相等,则执行default中的程序,例如上面的程序段4.
说明1:val的值应该为整数,case语句的个数可以很多,上面的x,y,z的值也是由你设定,但一定是一个常量
说明2:case语句里边的break别忘了,否则执行完该程序段后,会继续往下执行
C语言程序语句switch:
switch语句的语法如下(switch,case和default是关键字):
switch ( controllingExpression )
{case constantExpression1 :
case constantExpression2 :
case constantExpression3 :
statements; //当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
case constantExpression :
statements ;
...
default :
statements ;
}遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
C语言switch应用例子:
例一:
#include
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");
例二case 2:printf("Tuesday:
#include
int main()
{char rank;
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
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);
}
C语言中,switch语句的使用格式如下:
switch(表达式)
{case 常量表达式1 : 语句1; break;
case 常量表达式2 : 语句2; break;
case 常量表达式n : 语句n; break;
default : 语句n+1;
}举例如下:
int i=4, a=0;
switch(i)
{case 1 : a++; break; // 如果i=1,执行case 1 后面的语句,执行完后退出switch
case 2 : a+=2; break; // 如果i=2,执行case 2 后面的语句,执行完后退出switch
case 4 : a+=4; break; // 如果i=4,执行case 4 后面的语句,执行完后退出switch
default : a=0; // 如果i不等于上面所以case中的值,执行default后面的语句,执行完后退出switch
}
C语言提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.使用switch语句直接处理多个分支(当然包括两个分支).其一般形式为:
引用
switch(表达式)
{case 常量表达式1:
语句1;
case 常量表达式2:
语句2;
……
case 常量表达式n:
语句n;
default:
语句n+1;
}switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句.如下程序,可以根据输入的考试成绩的等级,输出百分制分数段。
特意找课本看了一下:
switch(表达式)
{case常量表达式1: 语句1;
case常量表达式2: 语句2;
…case常量表达式n: 语句n;
default : 语句n+1;
}其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 这是与前面介绍的if语句完全不同的,应特别注意。为了避免上述情况, C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。修改例题的程序,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
一、用法分析如下:
1、C语言程序语句switch:switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转// break;的。switch语句的语法如下(switch,case和default是关键字):
switch ( controllingExpression )
{case constantExpression1 :
case constantExpression2 :
case constantExpression3 :
statements; //当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements
case constantExpression :
statements ;
...
default :
statements ;
}2、只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
二、C语言
1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生异,由美国标准局为C语言制定了一套完整的美国标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,标准化组织(ISO)和电工委员会(IEC)发布的C11标准是C语言的第三个标准,也是C语言的标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
4、C语言是一门面向过程的计算机编程语言,与C++,Ja等面向对象的编程语言有所不同。