第6章 - 控制流程
嗨,朋友!我是长安。
前面几章我们学习的程序都是从上到下顺序执行的,这一章我们要学习如何让程序"做出选择"——控制流程语句!
🤔 什么是控制流程?
控制流程就是控制程序执行的路径,让程序能够根据不同的条件执行不同的代码。
类比:就像你走在路口,根据红绿灯的颜色决定是走还是停。
🌟 if 语句
最基本的条件判断语句。
基本语法
if (条件)
{
// 条件为 true 时执行
}
完整示例
using System;
namespace IfDemo
{
class Program
{
static void Main(string[] args)
{
int age = 20;
if (age >= 18)
{
Console.WriteLine("你已经成年了");
}
Console.ReadKey();
}
}
}
🎯 if-else 语句
有两种选择时使用。
语法
if (条件)
{
// 条件为 true 时执行
}
else
{
// 条件为 false 时执行
}
示例
int score = 75;
if (score >= 60)
{
Console.WriteLine("及格了!");
}
else
{
Console.WriteLine("不及格,继续努力!");
}
🔀 if-else if-else 语句
有多种选择时使用。
语法
if (条件1)
{
// 条件1为 true 时执行
}
else if (条件2)
{
// 条件2为 true 时执行
}
else if (条件3)
{
// 条件3为 true 时执行
}
else
{
// 所有条件都为 false 时执行
}
示例:成绩等级
using System;
namespace GradeDemo
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入分数:");
int score = int.Parse(Console.ReadLine());
if (score >= 90)
{
Console.WriteLine("等级:A 优秀");
}
else if (score >= 80)
{
Console.WriteLine("等级:B 良好");
}
else if (score >= 70)
{
Console.WriteLine("等级:C 中等");
}
else if (score >= 60)
{
Console.WriteLine("等级:D 及格");
}
else
{
Console.WriteLine("等级:E 不及格");
}
Console.ReadKey();
}
}
}
🎨 嵌套 if 语句
if 语句里面还可以嵌套 if 语句。
int age = 20;
bool hasLicense = true;
if (age >= 18)
{
if (hasLicense)
{
Console.WriteLine("可以开车");
}
else
{
Console.WriteLine("虽然成年了,但没有驾照,不能开车");
}
}
else
{
Console.WriteLine("未成年,不能开车");
}
建议
嵌套不要超过3层,否则代码会很难读。可以考虑使用逻辑运算符简化:
if (age >= 18 && hasLicense)
{
Console.WriteLine("可以开车");
}
🔄 switch 语句
当有多个固定值需要判断时,switch 比 if-else 更清晰。
语法
switch (表达式)
{
case 值1:
// 代码
break;
case 值2:
// 代码
break;
case 值3:
// 代码
break;
default:
// 都不匹配时执行
break;
}
示例:星期判断
using System;
namespace SwitchDemo
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入星期几(1-7):");
int day = int.Parse(Console.ReadLine());
switch (day)
{
case 1:
Console.WriteLine("星期一");
break;
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
case 4:
Console.WriteLine("星期四");
break;
case 5:
Console.WriteLine("星期五");
break;
case 6:
Console.WriteLine("星期六");
break;
case 7:
Console.WriteLine("星期日");
break;
default:
Console.WriteLine("输入错误!");
break;
}
Console.ReadKey();
}
}
}
多个 case 共用代码
int month = 3;
switch (month)
{
case 3:
case 4:
case 5:
Console.WriteLine("春季");
break;
case 6:
case 7:
case 8:
Console.WriteLine("夏季");
break;
case 9:
case 10:
case 11:
Console.WriteLine("秋季");
break;
case 12:
case 1:
case 2:
Console.WriteLine("冬季");
break;
default:
Console.WriteLine("输入错误!");
break;
}
❓ 三元运算符
简单的 if-else 可以用三元运算符简化。
语法
变量 = 条件 ? 值1 : 值2;
// 如果条件为 true,取值1,否则取值2
示例
int age = 20;
// 使用 if-else
string result;
if (age >= 18)
{
result = "成年";
}
else
{
result = "未成年";
}
// 使用三元运算符(更简洁)
string result2 = age >= 18 ? "成年" : "未成年";
Console.WriteLine(result2);
使用场景
- 简单的两种选择:用三元运算符
- 复杂的判断:用 if-else
💡 实战示例
示例1:简易登录系统
using System;
namespace LoginSystem
{
class Program
{
static void Main(string[] args)
{
// 正确的用户名和密码
string correctUsername = "admin";
string correctPassword = "123456";
Console.WriteLine("===== 登录系统 =====");
Console.Write("用户名:");
string username = Console.ReadLine();
Console.Write("密码:");
string password = Console.ReadLine();
if (username == correctUsername && password == correctPassword)
{
Console.WriteLine("\n登录成功!欢迎回来!");
}
else if (username != correctUsername)
{
Console.WriteLine("\n用户名错误!");
}
else
{
Console.WriteLine("\n密码错误!");
}
Console.ReadKey();
}
}
}
示例2:简易计算器菜单
using System;
namespace CalculatorMenu
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("===== 计算器 =====");
Console.WriteLine("1. 加法");
Console.WriteLine("2. 减法");
Console.WriteLine("3. 乘法");
Console.WriteLine("4. 除法");
Console.Write("请选择操作(1-4):");
int choice = int.Parse(Console.ReadLine());
Console.Write("请输入第一个数:");
double num1 = double.Parse(Console.ReadLine());
Console.Write("请输入第二个数:");
double num2 = double.Parse(Console.ReadLine());
double result = 0;
switch (choice)
{
case 1:
result = num1 + num2;
Console.WriteLine($"\n{num1} + {num2} = {result}");
break;
case 2:
result = num1 - num2;
Console.WriteLine($"\n{num1} - {num2} = {result}");
break;
case 3:
result = num1 * num2;
Console.WriteLine($"\n{num1} × {num2} = {result}");
break;
case 4:
if (num2 != 0)
{
result = num1 / num2;
Console.WriteLine($"\n{num1} ÷ {num2} = {result}");
}
else
{
Console.WriteLine("\n错误:除数不能为0!");
}
break;
default:
Console.WriteLine("\n无效的选择!");
break;
}
Console.ReadKey();
}
}
}
📊 if vs switch 对比
| 特性 | if-else | switch |
|---|---|---|
| 适用场景 | 范围判断、复杂条件 | 固定值判断 |
| 可读性 | 条件少时清晰 | 选项多时更清晰 |
| 性能 | 逐个判断 | 直接跳转(稍快) |
| 灵活性 | 更灵活 | 只能判断相等 |
// 适合 if-else
if (age >= 18 && age < 60)
{
// 范围判断
}
// 适合 switch
switch (dayOfWeek)
{
// 固定值判断
}
📝 本章小结
if语句用于单一条件判断if-else用于两种选择if-else if-else用于多种选择switch用于多个固定值的判断- 三元运算符用于简单的两种选择
- 记得
break语句(switch 必须)
🎯 下一步
学会了条件判断后,下一章我们要学习循环语句,让程序能够重复执行任务!
💪 练习题
- 输入一个数,判断是正数、负数还是零
- 输入月份(1-12),输出对应的季节
- 模拟 ATM 机,根据用户选择执行不同操作(查询、取款、存款、退出)
- 输入三个数,找出最大值
答案提示
- 使用 if-else if-else 判断
- 使用 switch 或 if-else
- 使用 switch 语句
- 使用嵌套 if 或多次比较
