条件判断语句的练习

C++ 条件语句与分支结构学习笔记

题目一:闰年判断(嵌套if结构)

问题描述
输入年份,按以下规则判断闰年:

  • 能被400整除 或 能被4整除但不能被100整除 → 闰年

  • 其他情况 → 平年

int year;
cin >> year;
if(year % 400 == 0) 
   cout << year << "是闰年" << endl;
else if(year % 100 == 0)
   cout << year << "是平年" << endl;
else if (year % 4 == 0) 
   cout << year << "是闰年" << endl;
else
   cout << year << "是平年" << endl;

用单行逻辑表达式简化闰年判断逻辑。
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)){
    cout << "是闰年";
}
else{
    cout << "是平年";
}

题目二:数字整除性验证

问题描述
输入整数,判断是否能同时被3和5整除,但不能被7整除。

if(num % 3 == 0 && num % 5 == 0 && num % 7 != 0){
    cout << "可以";
}
else{
    cout << "不可以";
}

题目三:商场阶梯折扣计算

问题描述
根据购物金额计算实付价格:

  • ≤500元 → 85折

  • 501~1000元 → 8折

  • 1000元 → 7折

if(money <= 500){
    price = money * 0.85;
}
else if(money <= 1000){
    price = money * 0.8;
}
else{
    price = money * 0.7;
}

条件判断语句除了if else还有switch

switch(exp)    {     //exp是表达式

case    可能的取值1 :       //case后的值各不相同,会执行不同的语句

            语句1;break;            

case    可能的取值2 :                       

            语句2;break;      ……              

case    可能的取值n :                         

           语句n;break;              

default :                       //default代表除以上n种可能取值之外的所有值,可省略               

           语句n+1;

}

题目四:成绩等级转换(switch应用)

问题描述
输入百分制成绩,转换为等级制:

  • 100 → A

  • 90~99 → B

  • 80~89 → C

  • 70~79 → D

  • <70 → E

switch(grade/10){
    case 10: cout << "A"; break;
    case 9: cout << "B"; break;
    case 8: cout << "C"; break;
    case 7: cout << "D"; break;
    default: cout << "E";
}

题目五:会员点券折扣计算(多case穿透)

问题描述
不同会员等级享受不同折扣:

  • 1-2级 → 6折

  • 3级 → 75折

  • 4级 → 8折

  • 5级 → 85折

  • 6-7级 → 9折

switch(level){
    case 1: case 2:
        money = num / 10 * 0.6; break;
    case 3:
        money = num / 10 * 0.75; break;
    // ...其他case类似处理
}

题目六:月份天数计算(综合应用)

问题描述
输入年份和月份,输出该月天数(需处理闰年2月)。

switch(month){
    case 2: // 特殊处理闰年
        if(year%400==0 || (year%100!=0 && year%4==0))
            cout << "29天";
        else
            cout << "28天";
        break;
    case 4: case 6: case 9: case 11:
        cout << "30天"; break;
    default:
        cout << "31天";
}

题目七:最优买笔方案(数学思维)

问题描述
班费购买单价为4、5、6元的笔,要求优先买最多的4元笔,剩余金额用5/6元补齐。

c = x / 4;          // 最多4元笔数量
y = x % 4;          // 剩余金额
switch(y){
    case 1: 
        b = 1;      // 用1支5元笔替换1支4元笔
        c--;
        break;
    case 2: 
        a = 1;      // 用1支6元笔替换1支4元笔
        c--;
        break;
    case 3: 
        a = b = 1;  // 用1支5元和1支6元替换2支4元
        c -= 2;
}

学习要点

  1. if-else 适用于范围判断,switch 适合离散值匹配

  2. 逻辑运算符 && 优先级高于 ||,必要时加括号

  3. case 穿透特性可简化多条件相同处理的情况

  4. 实际问题中需优先建立数学模型(如题8的贪心策略)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值