第7章 - 循环语句
嗨,朋友!我是长安。
如果要输出100次"Hello",难道要写100行代码吗?当然不用!这一章我们要学习循环语句,让程序能够重复执行任务。
🤔 什么是循环?
循环就是让程序重复执行某段代码,直到满足退出条件。
类比:就像你跑步,绕着操场跑10圈,每跑一圈就是一次循环。
🔄 for 循环
最常用的循环,适合知道循环次数的情况。
语法
for (初始化; 条件; 迭代)
{
// 循环体
}
示例
// 输出 1 到 10
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
// 输出 10 次 "Hello"
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Hello");
}
// 计算 1 到 100 的和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
Console.WriteLine($"1到100的和是:{sum}"); // 5050
执行流程
1. 初始化(i = 1)
2. 判断条件(i <= 10)
3. 执行循环体
4. 迭代(i++)
5. 回到步骤2
🔁 while 循环
先判断条件,条件为 true 才执行循环体。
语法
while (条件)
{
// 循环体
}
示例
// 输出 1 到 10
int i = 1;
while (i <= 10)
{
Console.WriteLine(i);
i++;
}
// 猜数字游戏
Random random = new Random();
int targetNumber = random.Next(1, 101); // 1-100 的随机数
int guess = 0;
while (guess != targetNumber)
{
Console.Write("请猜一个数字(1-100):");
guess = int.Parse(Console.ReadLine());
if (guess < targetNumber)
{
Console.WriteLine("太小了!");
}
else if (guess > targetNumber)
{
Console.WriteLine("太大了!");
}
else
{
Console.WriteLine("恭喜你猜对了!");
}
}
🔂 do-while 循环
先执行循环体,再判断条件。至少执行一次。
语法
do
{
// 循环体
} while (条件);
示例
// 菜单系统(至少显示一次)
int choice;
do
{
Console.WriteLine("\n===== 菜单 =====");
Console.WriteLine("1. 选项1");
Console.WriteLine("2. 选项2");
Console.WriteLine("0. 退出");
Console.Write("请选择:");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
Console.WriteLine("你选择了选项1");
break;
case 2:
Console.WriteLine("你选择了选项2");
break;
case 0:
Console.WriteLine("再见!");
break;
default:
Console.WriteLine("无效选择!");
break;
}
} while (choice != 0);
🎯 foreach 循环
专门用于遍历集合或数组(下一章会详细讲数组)。
语法
foreach (类型 变量 in 集合)
{
// 循环体
}
示例
string[] names = { "张三", "李四", "王五" };
foreach (string name in names)
{
Console.WriteLine(name);
}
⚠️ break 和 continue
break - 跳出循环
// 找到5就退出
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break; // 跳出循环
}
Console.WriteLine(i); // 输出:1 2 3 4
}
continue - 跳过当前循环
// 跳过偶数
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 跳过本次循环
}
Console.WriteLine(i); // 输出:1 3 5 7 9
}
🎨 嵌套循环
循环里面还可以有循环。
示例:乘法表
// 打印九九乘法表
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write($"{j}×{i}={i * j}\t");
}
Console.WriteLine();
}
输出:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
示例:打印图案
// 打印三角形
for (int i = 1; i <= 5; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("* ");
}
Console.WriteLine();
}
输出:
*
* *
* * *
* * * *
* * * * *
💡 实战示例
示例1:质数判断
using System;
namespace PrimeNumber
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入一个数:");
int num = int.Parse(Console.ReadLine());
bool isPrime = true;
if (num <= 1)
{
isPrime = false;
}
else
{
for (int i = 2; i <= Math.Sqrt(num); i++)
{
if (num % i == 0)
{
isPrime = false;
break;
}
}
}
if (isPrime)
{
Console.WriteLine($"{num} 是质数");
}
else
{
Console.WriteLine($"{num} 不是质数");
}
Console.ReadKey();
}
}
}
示例2:阶乘计算
Console.Write("请输入一个数:");
int n = int.Parse(Console.ReadLine());
long factorial = 1;
for (int i = 1; i <= n; i++)
{
factorial *= i;
}
Console.WriteLine($"{n}! = {factorial}");
📊 循环选择指南
| 循环类型 | 适用场景 | 示例 |
|---|---|---|
| for | 知道循环次数 | 循环10次 |
| while | 不知道循环次数 | 猜数字直到猜对 |
| do-while | 至少执行一次 | 菜单系统 |
| foreach | 遍历集合/数组 | 遍历姓名列表 |
📝 本章小结
for循环:知道次数时使用while循环:先判断再执行do-while循环:先执行再判断,至少执行一次foreach循环:遍历集合break跳出循环,continue跳过本次
🎯 下一步
掌握了循环后,下一章我们要学习数组,批量管理数据!
💪 练习题
- 输出1到100所有奇数的和
- 打印倒三角形(5行)
- 输入一个数,判断是否是回文数(如121、1221)
- 找出1到100之间的所有质数
答案提示
- 使用 for 循环,条件
i % 2 != 0 - 使用嵌套循环,外层控制行,内层控制列
- 反转数字,比较是否相等
- 双重循环,外层遍历数字,内层判断是否有因子
