C# 完全学习指南C# 完全学习指南
首页
基础教程
进阶内容
实战项目
编程指南
首页
基础教程
进阶内容
实战项目
编程指南
  • 基础教程

    • 📚 基础教程
    • 第1章 - 认识 C#
    • 第2章 - 环境搭建
    • 第3章 - 第一个程序
    • 第4章 - 变量与数据类型
    • 第5章 - 运算符
    • 第6章 - 控制流程
    • 第7章 - 循环语句
    • 第8章 - 数组
    • 第9章 - 方法
    • 第10章 - 面向对象基础
    • 第11章 - 类与对象
    • 第12章 - 继承
    • 第13章 - 多态
    • 第14章 - 封装
    • 第15章 - 接口

第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-elseswitch
适用场景范围判断、复杂条件固定值判断
可读性条件少时清晰选项多时更清晰
性能逐个判断直接跳转(稍快)
灵活性更灵活只能判断相等
// 适合 if-else
if (age >= 18 && age < 60)
{
    // 范围判断
}

// 适合 switch
switch (dayOfWeek)
{
    // 固定值判断
}

📝 本章小结

  • if 语句用于单一条件判断
  • if-else 用于两种选择
  • if-else if-else 用于多种选择
  • switch 用于多个固定值的判断
  • 三元运算符用于简单的两种选择
  • 记得 break 语句(switch 必须)

🎯 下一步

学会了条件判断后,下一章我们要学习循环语句,让程序能够重复执行任务!

下一章:循环语句 →

💪 练习题

  1. 输入一个数,判断是正数、负数还是零
  2. 输入月份(1-12),输出对应的季节
  3. 模拟 ATM 机,根据用户选择执行不同操作(查询、取款、存款、退出)
  4. 输入三个数,找出最大值
答案提示
  1. 使用 if-else if-else 判断
  2. 使用 switch 或 if-else
  3. 使用 switch 语句
  4. 使用嵌套 if 或多次比较
最近更新: 2025/12/27 14:02
Contributors: 王长安
Prev
第5章 - 运算符
Next
第7章 - 循环语句