【C&C++】分支结构(判断一年中的第几天)

要求:

输入一个日期,如“ 2017 6 15 ”,计算这一天是这一年的第几天(1月1日是第一天)并输出。假设输入的都是合法的日期,但别忘了考虑闰年的情况。

相关知识

if 语句会根据对某个条件的判断结果,将程序的流程分为两支。将程序分为多个分支的语句:

if-else 嵌套

switch 语句

if-else 嵌套

多路分支的第一种实现方法就是使用 if-else 嵌套,即在 if 分支和(或者) else 分支中再嵌套 if-else 语句。

例如:

cin >> angle;     // 输入角度
if (angle % 90 == 0)
{
   
    // if-else嵌套
    if (angle % 180 == 0)
        cout << "线段在X轴上" << endl;
    else
        cout << "线段在Y轴上" << endl;
}
else
    cout << "线段在象限" << angle / 90 + 1 << endl;

该程序计算输入的角度 angle 落在哪个象限或者哪个轴上。当输入的角度是90的倍数时(angle % 90 == 0为真),有两种情况,或者在X轴上,或者在Y轴上,所以需要其它条件(angle % 180 == 0)再次判断进行区分处理。

上面程序通过 if-else 嵌套实现了三路分支

switch 语句

另一种实现多路分支的方法是使用 switch 语句, 格式如下:

switch(<条件表达式>)
{
   
    case <常量表达式1>:
        <语句序列1>;
    case <常量表达式2>:
        <语句序列2>;
    ……
    case <常量表达式n>:
        <语句序列n>;
    default:
        <语句序列n+1>;
}

其中,switchcasedefault 都是 C++ 的关键字。<条件表达式>是值为整型的表达式;每个 case 对应一个分支处理;default 分支为默认处理分支<常量表达式1>……<常量表达式n>都是值为整型常量的表达式;<语句序列1>……<语句序列n+1>都是一组语句,可以为空

switch 语句执行流程如下:

switch 语句执行时,首先计算<条件表达式>得到一个整型的值,将该值与<常量表达式1>……<常量表达式n>的值逐个进行比较,如果与其中一个相等,则执行该常量表达式下的语句序列。
需要注意的是执行完该<常量表达式>对应的语句序列后,还将继续执行后续分支的处理语句序列,直到 switch 语句结束或者遇到跳转指令break);如果测试表达式的值不与任何一个常量表达式的值相等,则执行 default 分支后面的语句

流程图如下:
在这里插入图片描述

switch 语句与 break

当一个 case 分支条件得到满足时,执行完该分支的语句序列后,还将继续执行后续分支的处理语句序列。如果希望执行完一个分支后就结束整个 switch 语句,可以在每个分支语句后面都加上一条 break 语句

break 语句是一种转移语句只能出现在 switch 结构和循环结构中break 语句可以跳出直接包含该 break 语句的 switch 结构或循环结构(只能跳出一层),程序控制离开该 switch 结构或循环结构,执行其后继语句

带 break 语句的 switch 语句模式如下:

switch(<条件表达式>)
{
   
    case <常量表达式1>
  • 18
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值