知识复习
逻辑运算符
if-else多分支语句
switch语句
switch语法格式和注意事项
switch语句的执行流程 
break关键字的作用
课堂学习
条件运算符?:
唯一的三目运算符
if语句
switch语句
不同选择结构的特点
- 语句适合判断条件比较复杂,但是分支比较少的情况。
- switch语句适合判断条件简单,但是分支比较多的情况。
- switch语句只能针对某个表达式的值做出判断,不能直接判断某个范围。
课堂训练
虫子吃苹果
//虫子吃苹果
#include<bits/stdc++.h>//万能头文件
using namespace std;
int main(){
int n,x,y,m;
// n代表苹果总数量,
// x每小时吃苹果的速度,y总时间,
// m是被虫子吃掉的苹果数量
cin>>n>>x>>y;
if(y%x==0) m=y/x;//是否可以整除
else{
m=y/x+1;//不能整除,就要+1
}
if(m>=n){//如果虫子在y小时内可以吃掉的数量大于等于总量,输出0;
cout<<0;
}
else cout<<n-m;
return 0;
}
//虫子吃苹果
#include<bits/stdc++.h>//万能头文件
using namespace std;
int main(){
int n,x,y,m;
// n代表苹果总数量,
// x每小时吃苹果的速度,y总时间,
// m是被虫子吃掉的苹果数量
cin>>n>>x>>y;
m=y%x==0?y/x:y/x+1;
// cout<<((n-m)>=0?n-m:0);//绝对不允许在输出语句使用赋值语句,三目运算符是可以的
cout<<(n>=m?n-m:0);
return 0;
}
3283 纸的张数
描述
大白老师很爱学习,每天都要看几页编程书,此书的第1页和第2页在同一张纸上,第3页和第4页在同一张纸上,第5页和第6页在同一张纸上,依次类推。这天大白老师从书的第x页看到了第y页,请问这几页书共有几张纸。
输入描述
一行,两个正整数x和y(1≤x,y≤100000),分别表示开始页码和结束页码,数与数之间以空格隔开
输出描述
一行,一个整数,表示纸张数量
样例输入 1
1 4
样例输出 1
2
样例输入 2
2 5
样例输出 2
3
提示
样例说明1:从第1页到第4页,第1页和第2页是一张纸,第3页和第4页是一张纸,所以一共是2张纸,输出2。
样例说明2:从第2页到第5页,第2页是一张纸,第3页和第4页是一张纸,第5页是一张纸,所以一共是3张纸,输出3。
#include<iostream>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int cnt=0;
if(x%2==1&&y%2==0) cnt=(y-x+1)/2;
else cnt=(y-x+1)/2+1;
cout<<cnt;
return 0;
}
3060 三角形的人工湖
描述
童程学院想要在校区内新建一个三角形的人工湖,一是为了养鱼美观,二是可以循环水资源。为了使人工湖更加美观,小童提议:将人工湖建成等腰三角形(三条边中任意两条边相等的三角形)。
请编写程序,输入三个正整数,判断这三种长度的边能否构成一个等腰三角形。
输入描述
三个正整数a、b、c,使用空格隔开,表示三条边。(1≤a,b,c≤1000)
输出描述
一行字符串,"YES"表示能构成等腰三角形,"NO"表示不能构成等腰三角形。
样例输入 1
10 12 15
样例输出 1
NO
样例输入 2
8 8 6
样例输出 2
YES
样例输入 3
9 9 9
样例输出 3
YES
提示
判断是否能够成等腰三角形,首先要判断是否能构成三角形。
#include <iostream>
using namespace std;
int main(){
//1、接收输入的三个正整数
int a,b,c;
cin>>a>>b>>c;
//2、判断是否为三角形
if(a+b>c&&a+c>b&&b+c>a){
//3、判断是否为等腰三角形
if(a==b||a==c||b==c) cout<<"YES";
else cout<<"NO";
}
else cout<<"NO";
return 0;
}
3057 花果山会员
描述
孙悟空在西天取经之后,创办了一个公司:“花果山生态旅游公司”。公司的顾客分为白金会员,金卡会员,银卡会员,普通客户。
为了促进顾客来花果山观光消费,公司推出了优惠活动:
1)如果顾客为白金会员,本次消费立减100元
2)如果顾客为金卡会员,本次消费立减80元
3)如果顾客为银卡会员,本次消费立减70元
4)如果顾客为普通客户,本次消费立减30元
孙悟空希望能够通过程序根据顾客的身份和来花果山旅游的花费,给出应该支付的金额。
输入描述
两行。
第一行一个字符,'P’表示白金会员、'G’表示金卡会员、'S’表示银卡会员。其他字符均表示普通用户。
第二行一个整数,表示顾客来花果山观光的花费。(最低消费300元,上限10000)。
输出描述
一个整数,表示顾客最终应该支付的金额。
样例输入 1
G 580
样例输出 1
500
#include <iostream>
using namespace std;
int main(){
//1、接收客户身份
char id;
cin>>id;
//2、接收本次花果山旅游的花费
int x;
cin>>x;
///3、根据客户身份,计算本次旅游花费
switch(id){
case 'P': x-=100;break;
case 'G': x-=80;break;
case 'S': x-=70;break;
default: x-=30;
}
//4、输出本次旅行的花费
cout<<x;
return 0;
}
3061 客栈选择
描述
丽江河边有 6 家很有特色的客栈,客栈按照其位置顺序从1-6编号。每家客栈都按照不同的色调进行装饰,且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。大白老师准备从6家客栈中选择一家喝咖啡。每家客栈的最低消费和装修色调如下表:
输入大白老师的最低消费预算,他喜欢的装修色调,输出选定的客栈编号。(提示:优先根据最低消费预算做选择)
输入描述
两行,
第一行一个正整数m,代表最低消费钱数,50≤m≤1000;
第二行一个字符c,代表客栈装修色调(蓝色:‘b’;黄色:‘y’)。
输出描述
一个正整数,代表选定的客栈编号。
样例输入 1
300 b
样例输出 1
1
#include <iostream>
using namespace std;
int main(){
//1、接收用户输入的预算和色调
int m;
char c;
cin >> m >> c;
//2、创建整型变量保存客栈编号
int x;
//3、根据预算选择客栈
if(m>=200){
//4、根据色调进一步选择
if(c=='b') x=1;
else x=2;
}
else if(m>=100){
if(c=='b') x=4;
else x=3;
}else{
if(c=='b') x=5;
else x=6;
}
//5、输出最终选择的客栈编号
cout << x << endl;
return 0;
}
课后作业
3064 快递费用
描述
快递行业的高速发展,人们邮寄物品变得方便快捷。某快递点提供华东地区、华南地区、华北地区的寄件服务,其中华东地区编号为1、华南地区编号为2、华北地区编号为3。该快递点寄件的价目表具体如下所示:
编写一个快递计费程序,输入快递重量和地区编号,输出寄快递所需的费用。
输入描述
两个正整数,第一个正整数w,表示快递重量(1≤w≤10000);
第二个正整数id,表示地区编号 (1≤id≤3),数字之间使用空格分隔。
输出描述
一个正整数,表示寄快递的费用。
样例输入 1
1 3
样例输出 1
14
样例输入 2
10 2
样例输出 2
28
提示
首重:最低计费重量,例如:首重为2kg,≤2kg按照2kg的标准收费。
续重:在最低计费重量后增加的重量,例如:>2kg的部分按照3元/kg收费。
#include <iostream>
using namespace std;
int main(){
//1、输入重量和地区编号
int w,id;
cin>>w>>id;
//2、创建变量保存快递费用
int m=0;
//3、根据快递重量和地区编号计算快递费用
switch(id){
case 1:
if(w<=2) m=13;
else m=13+3*(w-2);
break;
case 2:
if(w<=2) m=12;
else m=12+2*(w-2);
break;
case 3:
if(w<=2) m=14;
else m=14+4*(w-2);
break;
}
//4、输出快递费用
cout<<m;
return 0;
}