C++ 入门 - 6 - 判断语句 —— switch语句

如果你没有看上一课 C++ 入门 - 3 - 判断语句 —— if语句 可以去看一看.

对于所有题目都建议自己用 C++ 试一试.

1.switch语句的基本结构

如果要写的话就像这样: 

​switch(变量)
{
    case 值:
    {
        语句;
        break;
    }
    case 值:
    {
        语句;
        break;
    }
    case 值:
    {
        语句;
        break;
    }
    ......

    default:
    {
        语句;
        break;
    }
}
​

在 C++ 的 switch 语句中有两个关键的单词, 一个是 case, 一个是 default.

case 后面跟一个值然后写一个冒号, 作用类似于 if 语句中的 if 或者 else if.

而 default 后面直接跟一个冒号, 作用类似于 if 语句中的 else.

break 表示退出 switch 语句.

[注意: 我们在每个 case  或 default 的最后都要写一个 break, 否则会给你输出一些奇怪的东西].

2.代码片段

switch(mark)
{
  	case '+':
    {
        cout << "plus";
        break;
	}
  	case '-':
    {  
        cout << "minus";
        break;
	}
  	case '*':
    {  
        cout << "times";
        break;
	}
    case '/':
    { 
        cout << "divided by";
        break;
    }
    default:
    {
        cout << "No found";
        break;
    }
}   

这段代码的意思是, 

如果字符型变量 mark 的值为 + , 就输出 plus.

如果值为 - , 就输出 minus.

如果值为 * , 就输出 times.

如果值为 / , 就输出 divided by.

如果都不满足, 就输出 No found.

3.if 和 switch 的选择

对于 if 语句和 switch 语句的选择, 如果是针对同一个变量的判断, 建议选择 switch 语句, 如果是针对两个或两个以上的变量的判断, 建议选择 if 语句.

4.实例讲解 1

4.1.题目描述

今天是星期几

某款手机需要你由数字输出对应的星期.

如: 

输入: 1    输出: Monday

输入: 4    输出: Thursday

输入: 5    输出: Friday

4.2.输入格式

输入一个整数.

4.3.输出格式

输出该整数对应的单词.

4.4.代码

因为这道题的星期几是针对同一个变量的, 所以用 switch 语句.

​
#include <bits/stdc++.h> // 这行是头文件
using namespace std; // 这行是命名空间
int main() // 这行是函数名C++的主函数 main函数
{
	int day; // 这行声明了整型变量 day
	cin >> day; // 这行可以在控制台输入整型变量 day 
	switch(day) //如果变量 day
	{
		case 1: // 为 1
		{
			cout << "Monday"; // 这行可以在控制台输出 Monday 
			break; // 退出 switch 
		}
		case 2: // 为 2
		{
			cout << "Tuesday"; // 这行可以在控制台输出 Tuesday
			break; // 退出 switch 
		}
		case 3: // 为 3
		{
			cout << "Wednesday"; // 这行可以在控制台输出 Wednesday
			break; // 退出 switch 
		}
		case 4: // 为 4
		{
			cout << "Thursday"; // 这行可以在控制台输出 Thursday
			break; // 退出 switch 
		}
		case 5: // 为 5
		{
			cout << "Friday"; // 这行可以在控制台输出 Friday 
			break; // 退出 switch 
		}
		case 6: // 为 6
		{
			cout << "Saturday"; // 这行可以在控制台输出 Saturday 
			break; // 退出 switch 
		}
		case 7: // 为 7
		{
			cout << "Sunday"; // 这行可以在控制台输出 Sunday 
			break; // 退出 switch 
		}
        default: //否则
        {
            cout << "No found."; // 这行可以在控制台输出 No found.
            break; // 退出 switch 
        }
	}
	return 0; // 这行是返回值
}

​

可以看到他成功输出了 Saturday.

5.实例讲解 2 - switch 与 if 的嵌套

5.1.题目描述

这个月有几天

某款智能手机想要加入计算每个月有几天的功能

如:

​输入: 2024 2    输出: 29

输入: 2023 2    输出: 28

输入: 2025 5    输出: 31

扩展资料

闰年产生原因:
通常的解释是说一年有多少天多少小时多少分,取整数365还有多余的,累积达到一天24小时后,就多加一天的年是闰年。这个解释只是告诉了大家怎么计算,是人为设置的东西。
最根本的原因是:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为每四年累计一天,故第四年于2月末加1天,使当年的历年长度为366日,这一年就为闰年。
现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来。因此每四百年中要减少三个闰年。所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年。
这就是通常所说的:四年一闰,百年不闰,四百年再闰。 例如,2000年是闰年,2100年则是平年。

5.2.输入格式

两个整数分别为当月的年份和月份.

5.3.输出格式

一个整数为当月的天数.

5.4.代码

#include <bits/stdc++.h> // 这行是头文件
using namespace std; // 这行是命名空间
int main() // 这行是函数名C++的主函数 main函数
{
	int year, month; // 这行声明了整型变量 day
	cin >> year >> month; // 这行可以在控制台输入整型变量 day 
	switch(month) //如果变量 day
	{
		case 1: // 为 1
		case 3: // 为 3
		case 5: // 为 5
		case 7: // 为 7
		case 8: // 为 8
		case 10: // 为 10
		case 12: // 为 12
		{
			cout << 31; // 这行可以在控制台输出 31
			break; // 退出 switch 
		}
		case 4: // 为 4
		case 6: // 为 6
		case 9: // 为 9
		case 11: // 为 11
		{
			cout << 30; // 这行可以在控制台输出 30 
			break; // 退出 switch 
		}
		case 2: // 为 2
		{
			if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
			{
				cout << 29; // 这行可以在控制台输出 29
			}
			else
			{
				cout << 28; // 这行可以在控制台输出 28 
			}
			break; // 退出 switch 
		}
        default: //否则
        {
            cout << "No found."; // 这行可以在控制台输出 No found.
            break; // 退出 switch 
        }
	}
	return 0; // 这行是返回值
}

 2 月特殊, 因为百年不润, 四百年一润, 所以要设置如果不能被 400 整除, 就不是闰年.

在 switch 语句中连续写多个 case, 就可以让这多个 case 都执行第一个中间有代码的 case, 就可以实现 || (或) 的效果.

今天, 关于 switch 语句的博客就结束了.

6.最后一题

你可以用完成最后一道题吗?洛谷 P5711icon-default.png?t=N7T8https://www.luogu.com.cn/problem/P5711

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值