在C中,使用`switch`语句筛选成绩可以通过以下步骤实现。根据需求,我们可以将成绩分为不同的等级(如优秀、良好、中等、及格、不及格),并根据分数范围进行判断。以下是具体实现方法:
一、基本结构与语法
`switch`语句中的表达式必须是整型、字符串、字符或布尔型数据类型。
分支匹配规则
- 当表达式值与某个`case`标签完全匹配时,执行对应`case`后的代码块;
- 若所有`case`均不匹配,则执行`default`语句块。
二、成绩等级判断示例
以下是使用`switch`语句判断成绩等级的完整代码示例:
1. 基础等级划分(0-100分)
```csharp
using System;
class Program {
static void Main() {
Console.Write("请输入成绩(0-100): ");
int score = Convert.ToInt32(Console.ReadLine());
switch (score / 10) {
case 10: case 9:
Console.WriteLine("优秀");
break;
case 8:
Console.WriteLine("良好");
break;
case 7:
Console.WriteLine("中等");
break;
case 6:
Console.WriteLine("及格");
break;
default:
Console.WriteLine("不及格");
break;
}
}
}
```
2. 优化建议
减少重复代码: 当成绩区间较连续时,可以使用`case`链(如`case 6: case 7: case 8:`)减少冗余; 输入验证
3. 使用`switch`表达式(C 8.0+)
C 8.0引入了 switch表达式,支持更简洁的写法:
```csharp
using System;
class Program {
static void Main() {
Console.Write("请输入成绩(0-100): ");
int score = Convert.ToInt32(Console.ReadLine());
string grade = score >= 90 ? "优秀" :
score >= 80 ? "良好" :
score >= 70 ? "中等" :
score >= 60 ? "及格" : "不及格";
Console.WriteLine($"成绩等级: {grade}");
}
}
```
此方法通过嵌套三元运算符简化了`switch`语句,但可读性可能略低于传统`switch`结构。
三、注意事项
确保输入的分数被正确转换为整数类型,避免类型不匹配错误;
使用英文冒号(`:`)分隔`case`标签,避免因编码问题导致语法错误。
通过以上方法,可以灵活地使用`switch`语句筛选成绩,并根据实际需求调整等级划分标准。