c语言switch小结

目录

基本格式

switch语句与if语句的区别

 switch语句的一些特性

switch语句的普通应用 

switch语句稍微高阶的应用


基本格式

switch(表达式)

{

case 常量表达式1:执行代码块1;break;

...

case 常量表达式n:执行代码块n;break;

default:执行代码块n+1;

    break;

}

switch是一个多分支选择语句,并且可以支持嵌套。 

switch后表达式是判断依据,如果表达式的值等于case后常量表达式的值,则执行后面的代码块直到遇到break或者全部执行。

default的作用就是当表达式的值和常量值全部对比过之后,如果没有匹配的就会输出default后的语句。

switch语句与if语句的区别

(1)switch对后面表达式的值判断更加严格。简单来说,你只能看“被判断的值”是否“==”case后面那些常量,而不能进行大于小于的比较。

(2)switch是连续执行判断为真后面所有内容。例如,在第一个表达式判断为真,则一口气执行后面的所有语句直到碰到break。

(3)switch后面的表达式语句只能是整型或是字符类型。

(4)case后可以是空语句。

 switch语句的一些特性

(1)default可以不要,break也可以不要。

(2)case后,可以有多个语句,可以不用{}括起来。

(3)case后常量表达式值不能一样,否则出错。

(4)case后可以是空语句。

(5)case和default子句的先后顺序可以先后变动,并且变与不变没有区别。

switch语句的普通应用 

一个用烂的例子。。。

#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
	int day = 0;				  
	printf("请输入一个数字\n");   
	scanf("%d", &day);			
	switch (day)
	{
	case 1:printf("星期一\n");break;
	case 2:printf("星期二\n");break;
	case 3:printf("星期三\n");break;
	case 4:printf("星期四\n");break;
	case 5:printf("星期五\n");break;
	case 6:printf("星期六\n");break;
	case 7:printf("星期天\n");break;
	default:printf("请重新输入\n");break;
	}
	return 0;
}

switch语句稍微高阶的应用

#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
    int date = 0, year = 0, month = 0, day = 0;
    printf("请依次输入年,月,日;中间用空格隔开");
    scanf("%d %d %d", &year, &month, &day);
    switch (month)
    {
    case 12:date += 30;
    case 11:date += 31;
    case 10:date += 30;
    case 9:date += 31;
    case 8:date += 31;
    case 7:date += 30;
    case 6:date += 31;
    case 5:date += 30;
    case 4:date += 31;
    case 3:
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
            date += 29;
        else
            date += 28;
    case 2:date += 31;
    case 1:date += day; break;
    default:printf("error");break;
    }
    printf("%d年%d月%d日是该年的第%d天", year, month, day, date);
    return 0;
}

从这个例子看出,当不加break的时候,switch可以做到if无法做到的,即连续执行,并且可以判断开始的位置;如果你想对结束的位置进行判断后跳出,把它反过来就行。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值