返回 课程
信奥AC之路-1级
0% 完成
0/0 步骤
-
第1课 开发环境与基础输出5 主题|小节
-
第2课 算术运算符7 主题|小节
-
第3课 printf与运算输出7 主题|小节
-
第4课 数的进制与拆位6 主题|小节
-
第5课 变量与基础运算17 主题|小节
-
第6课 常量与取整运算8 主题|小节
-
第7课 关系运算8 主题|小节
-
第8课 逻辑运算9 主题|小节
-
第9课 输入与计算进阶10 主题|小节
-
第10课 if语句及双分支语句8 主题|小节
-
第11课 if语句及双分支进阶11 主题|小节
-
第12课 三目运算9 主题|小节
-
第13课 多分支、多if和switch语句11 主题|小节
-
第14课 循环(基本输出)7 主题|小节
-
第15课 循环(While+If)8 主题|小节
-
第16课 循环(计数、求和、求乘积)10 主题|小节
-
第17课 循环进阶(While+)8 主题|小节
-
第18课 do-while及while其他用法8 主题|小节
-
第19课 For循环基础9 主题|小节
-
第20课 For循环进阶8 主题|小节
课 进展
0% 完成
“接下来,让我们探索switch语句的强大功能,”我说,”switch语句在处理多选择情况时非常有用,尤其是当选择基于一个整数或字符值时。”
13.3.1 汉译英
实验四:数字转换为英文
题目描述:输入某个整数,如果输入的整数在1~9范围内,则输出相对应的英文单词,否则输出”out”。
样例输入:
5
样例输出:
five
代码实现:
// 方法一:使用多分支结构
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
if(n == 1){ // 判断n是否等于1
cout << "one"; // 如果是,则输出"one"
}else if(n == 2){ // 判断n是否等于2
cout << "two"; // 如果是,则输出"two"
}else if(n == 3){ // 判断n是否等于3
cout << "three"; // 如果是,则输出"three"
}else if(n == 4){ // 判断n是否等于4
cout << "four"; // 如果是,则输出"four"
}else if(n == 5){ // 判断n是否等于5
cout << "five"; // 如果是,则输出"five"
}else if(n == 6){ // 判断n是否等于6
cout << "six"; // 如果是,则输出"six"
}else if(n == 7){ // 判断n是否等于7
cout << "seven"; // 如果是,则输出"seven"
}else if(n == 8){ // 判断n是否等于8
cout << "eight"; // 如果是,则输出"eight"
}else if(n == 9){ // 判断n是否等于9
cout << "nine"; // 如果是,则输出"nine"
}else{ // 如果n不在1~9范围内
cout << "out"; // 输出"out"
}
return 0;
}
// 方法二:使用多个独立的if语句
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
if(n == 1){ // 判断n是否等于1
cout << "one"; // 如果是,则输出"one"
}
if(n == 2){ // 判断n是否等于2
cout << "two"; // 如果是,则输出"two"
}
if(n == 3){ // 判断n是否等于3
cout << "three"; // 如果是,则输出"three"
}
if(n == 4){ // 判断n是否等于4
cout << "four"; // 如果是,则输出"four"
}
if(n == 5){ // 判断n是否等于5
cout << "five"; // 如果是,则输出"five"
}
if(n == 6){ // 判断n是否等于6
cout << "six"; // 如果是,则输出"six"
}
if(n == 7){ // 判断n是否等于7
cout << "seven"; // 如果是,则输出"seven"
}
if(n == 8){ // 判断n是否等于8
cout << "eight"; // 如果是,则输出"eight"
}
if(n == 9){ // 判断n是否等于9
cout << "nine"; // 如果是,则输出"nine"
}
if(n < 1 || n > 9){ // 判断n是否不在1~9范围内
cout << "out"; // 如果是,则输出"out"
}
return 0;
}
// 方法三:使用嵌套的if结构
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
if(n >= 1 && n <= 9){ // 首先判断n是否在1~9范围内
if(n == 1){ // 如果在范围内,判断n的具体值
cout << "one"; // 输出相应的英文单词
}else if(n == 2){
cout << "two";
}else if(n == 3){
cout << "three";
}else if(n == 4){
cout << "four";
}else if(n == 5){
cout << "five";
}else if(n == 6){
cout << "six";
}else if(n == 7){
cout << "seven";
}else if(n == 8){
cout << "eight";
}else if(n == 9){
cout << "nine";
}
}else{ // 如果n不在1~9范围内
cout << "out"; // 输出"out"
}
return 0;
}
// 方法四:使用switch语句
#include <iostream>
using namespace std;
int main() {
int n; // 定义整数变量n
cin >> n; // 输入一个整数
switch(n){ // 根据n的值选择不同的分支
case 1: // 如果n等于1
cout << "one"; // 输出"one"
break; // 跳出switch结构
case 2: // 如果n等于2
cout << "two"; // 输出"two"
break; // 跳出switch结构
case 3: // 如果n等于3
cout << "three"; // 输出"three"
break; // 跳出switch结构
case 4: // 如果n等于4
cout << "four"; // 输出"four"
break; // 跳出switch结构
case 5: // 如果n等于5
cout << "five"; // 输出"five"
break; // 跳出switch结构
case 6: // 如果n等于6
cout << "six"; // 输出"six"
break; // 跳出switch结构
case 7: // 如果n等于7
cout << "seven"; // 输出"seven"
break; // 跳出switch结构
case 8: // 如果n等于8
cout << "eight"; // 输出"eight"
break; // 跳出switch结构
case 9: // 如果n等于9
cout << "nine"; // 输出"nine"
break; // 跳出switch结构
default: // 如果n不匹配任何case
cout << "out"; // 输出"out"
break; // 跳出switch结构
}
return 0;
}
思考:
- 方法一使用多分支结构,代码较长但逻辑清晰
- 方法二使用多个独立的if语句,可能导致多个分支被执行(如果忘记添加return语句)
- 方法三使用嵌套的if结构,先检查范围,再处理具体值
- 方法四使用switch语句,对于这种基于单个整数值的多选择情况,代码最简洁清晰
- 在switch语句中,break语句非常重要,如果忘记添加,会导致”fall through”现象
13.3.2 每月天数
实验五:判断每月天数
题目描述:小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
样例输入:
2021 2
样例输出:
28
代码实现:
// 方法一:使用多分支结构
#include <iostream>
using namespace std;
int main() {
int y, m; // 定义整数变量y和m表示年份和月份
cin >> y >> m; // 输入年份和月份
if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){
cout << 31; // 如果是31天的月份,输出31
}else if(m == 4 || m == 6 || m == 9 || m == 11){
cout << 30; // 如果是30天的月份,输出30
}else if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)){
cout << 29; // 如果是闰年的2月,输出29
}else{
cout << 28; // 如果是平年的2月,输出28
}
return 0;
}
// 方法二:使用嵌套的if结构
#include <iostream>
using namespace std;
int main() {
int y, m; // 定义整数变量y和m表示年份和月份
cin >> y >> m; // 输入年份和月份
if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){
cout << 31; // 如果是31天的月份,输出31
}else if(m == 4 || m == 6 || m == 9 || m == 11){
cout << 30; // 如果是30天的月份,输出30
}else{ // 如果是2月
if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)){
cout << 29; // 如果是闰年,输出29
}else{
cout << 28; // 如果是平年,输出28
}
}
return 0;
}
// 方法三:使用switch语句
#include <iostream>
using namespace std;
int main() {
int y, m; // 定义整数变量y和m表示年份和月份
cin >> y >> m; // 输入年份和月份
switch(m){ // 根据月份m选择不同的分支
case 1: // 一月
case 3: // 三月
case 5: // 五月
case 7: // 七月
case 8: // 八月
case 10: // 十月
case 12: // 十二月
cout << 31; // 这些月份都是31天
break; // 跳出switch结构
case 4: // 四月
case 6: // 六月
case 9: // 九月
case 11: // 十一月
cout << 30; // 这些月份都是30天
break; // 跳出switch结构
case 2: // 二月
if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)){
cout << 29; // 如果是闰年,输出29
}else{
cout << 28; // 如果是平年,输出28
}
break; // 跳出switch结构
default: // 如果m不在1-12范围内
cout << "Invalid month"; // 输出错误信息
break; // 跳出switch结构
}
return 0;
}
思考:
- 方法一使用多分支结构,通过逻辑或连接多个条件,处理不同类型的月份
- 方法二使用嵌套的if结构,将2月作为特殊情况单独处理
- 方法三使用switch语句,利用”fall through”特性简化了代码,对于多个月份有相同天数的情况尤其有效
- switch语句中可以包含if语句,用于处理2月的特殊情况
- 闰年判断条件:能被400整除,或者能被4整除但不能被100整除