C++ switch语句题目
时间: 2025-01-18 20:00:12 浏览: 57
### C++ `switch` 语句练习题与示例
#### 示例一:成绩等级评定
通过输入的成绩分数来决定学生的成绩等级。假设成绩范围为0至100分,按照如下标准划分:
- 成绩大于等于90分为 A;
- 大于等于80小于90分为 B;
- 大于等于70小于80分为 C;
- 大于等于60小于70分为 D;
- 小于60分为 E。
```cpp
#include <iostream>
using namespace std;
int main() {
int score;
cin >> score;
switch(score / 10) {
case 10:
case 9:
cout << "A" << endl;
break;
case 8:
cout << "B" << endl;
break;
case 7:
cout << "C" << endl;
break;
case 6:
cout << "D" << endl;
break;
default:
cout << "E" << endl;
break;
}
}
```
此代码段展示了如何利用 `score/10` 的商作为 `switch` 表达式的值来进行匹配[^4]。
#### 示例二:字符转换大写转小写或反之亦然
给定一个小写字母或大写字母,将其转换成对应的大写字母或小写字母输出。
```cpp
#include <iostream>
using namespace std;
int main(){
char ch;
cin >> ch;
switch(ch){
case 'a'...'z':
ch -= ('a'-'A');
cout << ch << endl;
break;
case 'A'...'Z':
ch += ('a'-'A');
cout << ch << endl;
break;
default:
cout << "Invalid input." << endl;
break;
}
}
```
注意这里使用了连续区间的形式(尽管某些编译器可能不支持),更常见的是分别列出所有的小写字母和大写字母情况[^1]。
#### 示例三:计算一年中的第几天
根据用户提供的月份和日期,计算这是这一年的第几天。考虑到不同月份有不同的天数以及闰年的影响,在实际编程时还需要额外逻辑处理这些特殊情况。
```cpp
#include <iostream>
using namespace std;
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int getDaysInMonth(int month, bool leapYear) {
static const int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(leapYear && month==2)
return 29;
else
return days[month-1];
}
int main(){
int day, month, sumOfDay=0;
bool leapYear;
cin>>day>>month;
int currentYear;
cin>>currentYear;
leapYear=isLeapYear(currentYear);
for(int i=1;i<month;++i){
sumOfDay+=getDaysInMonth(i,leapYear);
}
sumOfDay+=day;
cout<<sumOfDay<<endl;
}
```
这段代码实现了较为复杂的业务场景下的 `switch` 替代方案,即循环累加每个月份的总天数直到目标月份前一个月,并最终加上该月的具体日子得到全年累计日数[^5]。
阅读全文
相关推荐


















