关于switch-case问题

   上两天做了一个简单的switch的题目,竟然做错了

题目如下:

int main()
{
   int k = 5,n = 0;
   do
   {
    switch(k)
    {
    case 1:case 3:n+=1;break;
    default: n = 0;k--;
    case 2:case 4:n+=2;k--;break;
    }
    cout<<n;
   } while (k>0&&n<5);
}

我开始的结果就是0234,但实际结果是2345;

我错的原因就是如果没找到匹配项就只想default的执行但没有执行default后面的case语句。

switch的执行流程是如果有匹配的case就从那点开始一直往下执行,一直到遇到break或到switch结束;

如果没有case匹配又没有default就跳出switch;

如果没有case匹配但又有default就要从default那一点开始执行一直到break或结束switch

 

转载于:https://www.cnblogs.com/self-control/archive/2012/11/09/article.html

关于`switch-case`在C++中的应用,可以设计多种类型的题目。下面是一个示例题目的说明及相关的几个问题: ### 题目说明 编写一个程序,在用户输入一个整数时,程序会根据该整数的值分别打印出对应的月份名称。 例如: - 输入 `3` 应该输出 “March” - 输入 `6` 应该输出 “June” **注意**:程序应该能够处理从 `1` 到 `12` 的所有有效输入,并适当地处理无效输入(如负数、非整数或其他超出范围的数字),在这种情况下应提示用户并请求有效的输入。 ### 示例代码框架 ```cpp #include <iostream> #include <string> int main() { int month; std::cout << "请输入一个月的编号(1-12): "; // 这里需要读取用户输入,并检查有效性 switch (month) { case 1: std::cout << "January"; break; case 2: std::cout << "February"; break; // 类似地添加其他月份... default: std::cout << "Invalid input"; break; } return 0; } ``` ### 相关问题 1. **如何增加错误处理机制**?考虑到用户可能会输入非整数值或不在1到12之间的整数,你应该如何修改代码以捕获并处理这些情况? 2. **如何改进用户体验**?除了提供明确的错误信息外,你还可以通过什么方式让用户更容易理解他们犯了什么错误,比如在输入无效时提供更具体的帮助信息? 3. **尝试扩展功能**:如果这个程序只能识别一年中的12个月,你将如何修改它使其能够处理整个公历年,即包括闰年的情况?考虑闰年的规则是如何影响日期计算和显示的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值