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;
}
学习要点
-
if-else适用于范围判断,switch适合离散值匹配 -
逻辑运算符
&&优先级高于||,必要时加括号 -
case穿透特性可简化多条件相同处理的情况 -
实际问题中需优先建立数学模型(如题8的贪心策略)
592

被折叠的 条评论
为什么被折叠?



