秒懂C#14 第四章:条件逻辑与循环结构
我用一个买东西的小情景剧来给小伙伴儿们讲讲if语句。** 想象我们正在编导一出小米专卖店购物情景剧剧:**剧情发展:关键的“如果”时刻来了!大括号 { }店员:“小米AI眼镜1899元;您需要买一副吗?你说:“买一副。\"除了\",C#里还有其他几个常用的转义字符,它们都以反斜杠\"'\''\\"第一行\n第二行"\t"姓名\t年龄"现在,想想看,如果你的小钱包里只有 1500元,if语句还会执行
一、if语句(条件判断)
就像做选择题:
- 如果满足某个条件,就执行这段段代码;
- 如果不满足,就跳过这段代码。
我用一个买东西的小情景剧来给小伙伴儿们讲讲if语句。
** 想象我们正在编导一出小米专卖店购物情景剧剧:**
int price = 1899; // 商品价格标签:小米AI眼镜1899元
int yourMoney = 2000; // 你的小钱包里有多少钱
string wordsSpoken = "店员:\"小米AI眼镜1899元;您需要买一副吗?\""; // 店员的台词
Console.WriteLine(wordsSpoken); // 店员开口说话啦!
剧情发展:关键的“如果”时刻来了!
if (yourMoney >= price) // 如果你小钱包里的钱 ≥ 眼镜价格
{
Console.WriteLine("你说:\"买一副。\""); // 就愉快地买下!
}
if:就像一个决策小管家,它只做一件事——检查小钱包里的钱够不够。
yourMoney >= price:这是小管家的判断法则。这里的 >=是“大于或等于”的符号,意思是“钱够吗?”。大括号 { }:像是一个行动指令包。如果小管家判断“钱够!”条件为true(真),就会执行这个大括号里的所有指令。这里只有一条指令,就是说“买一副”。
因为2000元确实大于1899元,所以程序运行后,店员会先问,然后你会决定购买。控制台最终的输出结果是:
店员:“小米AI眼镜1899元;您需要买一副吗?”
你说:“买一副。”
- 在C#代码里看到的这个
\",是一个转义字符。可以把它想象成一个“魔法符号”,它的作用就是告诉计算机:“喂,我后面这个引号不是代码的结束标记,而是我真正想显示的文字的一部分!” - 你可以把**反斜杠
\想象成一个 “取消键”。当它放在一个特殊符号(比如引号)前面时,就取消了那个符号的特殊功能,让它变回一个普通的字符。
常见的“魔法符号”家族成员
除了 \",C#里还有其他几个常用的转义字符,它们都以反斜杠 \ 开头:
| 转义序列 | 含义 | 例子 |
|---|---|---|
\" |
双引号 | "他说:\"是的。\"" → 输出:他说:"是的。" |
\' |
单引号 | '\'' → 一个字符:' |
\\ |
反斜杠本身 | "C:\\Users\\Name" → 路径:C:\Users\Name |
\n |
换行符 | "第一行\n第二行" → 输出两行文字 |
\t |
制表符(Tab) | "姓名\t年龄" → 输出时会有一个Tab间隔 |
喂!醒醒,做了半天的美梦了!你想过一个问题吗?如果钱不够呢?
现在,想想看,如果你的小钱包里只有 1500元,if语句还会执行大括号里的“买一副”指令吗?为什么?
二、else语句(反向判断)
if和 else是好搭档
故事里只用了 if。其实,if经常和 else一起用,就像说“如果……否则……”。比如,我们可以让情景剧更完整:
if (yourMoney >= price)
{
Console.WriteLine("你说:\"买一副。\""); //开心地拿到新眼镜!
}
else
{
Console.WriteLine("你说:\"钱不够,下次再买吧。\""); //有点小遗憾~
}
这样,无论钱够不够,程序都会有不同的反应,就像故事有不同的结局!
希望这个小情景剧能帮你理解这段代码!编程就像编故事,if语句能帮我们设计不同的情节发展。试试把 yourMoney的值改成1500,看看会有什么不同吧!
我们已经学习到第四章了,代码中经常出现的像“伏地魔” 一样躲在行尾的 类似//开心地拿到新眼镜!和 //有点小遗憾~这样的东西是什么?,在编程世界里,我们称之为 代码注释。它们就像是藏在代码里的“魔法笔记”,专门写给我们这些阅读代码的人看的,而计算机在执行代码时则会像麻瓜一样完全忽略它们。
注释主要有两个核心作用:
- 解释说明:用来解释某一行或某一段代码是做什么的,让代码更容易被理解。在情景剧的代码里,它们生动地说明了在不同条件下程序输出对应语句时,用户的心情。
- 调试辅助:在测试代码时,可以临时用注释
“屏蔽”掉一些代码行,让计算机不执行它们,从而帮助定位问题。
注释的语法规则很简单:
- 单行注释:以两个斜杠 //开头,它之后直到本行结束的内容都会被视为注释,计算机会忽略这些内容。
- 还有一种多行注释,用
/*开始,*/结束,可以跨越多行。
下面我们让情景剧更复杂一点:
如果满足两个条件(比如你的小钱包里有1500元,而且你还是是会员),才可以买到小米AI眼镜:
int price = 1899; // 商品价格标签:小米AI眼镜1899元
int memberPrice=1500; // 会员价1500元
int yourMoney = 1500; // 你的小钱包里有多少钱
bool isMember = true; // 是否是会员->true代表是(真)
string wordsSpoken = "店员:\"小米AI眼镜1899元,如果您是会员,只需要1500元,您需要买一副吗?\""; // 店员的台词
Console.WriteLine(wordsSpoken); // 店员开口说话啦!
if (yourMoney >= memberPrice && isMember==true ) // 你的小钱包里有1500元,而且你还是会员
{
Console.WriteLine("你说:\"买一副。\""); // 就愉快地买下!
}
else
{
Console.WriteLine("你说:\"钱不够,下次再买吧。\""); //有点小遗憾~
}

择日不如撞日,至此良辰美景我们顺便来聊聊两位 “逻辑判官”
严谨的守门员:&&(逻辑与)**
在代码中:if (yourMoney >= memberPrice && isMember == true)
这一行里的 &&,就像一个严谨的守门员,它的规则非常严格:它两边的条件都必须为true(真),整个表达式才为真。
运算规则: 条件1 && 条件2,只有当“条件1”和“条件2”同时为 true时,结果才是 true。只要有一个是 false,结果就是 false。
短路特性: 这个守门员还很聪明,他会“短路求值”。意思是,他会先检查左边的条件(yourMoney >= memberPrice)。如果发现你的钱根本不够(左边条件为 false),他就会立刻做出决定——“不通过”!并且根本不会再去检查你到底是不是会员(右边的 isMember==true条件)。这样可以提高效率,避免执行不必要的检查。
在情景剧例子中,正是因为你的钱(1500元)等于会员价(1500元)并且你是会员,两个条件都满足,守门员 &&才放行,执行了 if分支里的购买操作。
灵活的通融者:||(逻辑或)**
现在,我们来给情景剧加个新情节,看看 ||如何登场。假设小米专卖店有个促销活动:或者是会员,或者有优惠券,都可以享受会员价。
我们修改一下代码:
int price = 1899;
int memberPrice = 1500;
int yourMoney = 1500;
bool isMember = true;
bool hasCoupon = false; // 新增:代表没有优惠券
string wordsSpoken = "店员:\"小米AI眼镜1899元,如果您是会员或者有优惠券,只需要1500元!您需要买一副吗?\"";
Console.WriteLine(wordsSpoken);
if (yourMoney >= memberPrice && (isMember == true || hasCoupon == true)) // 组合使用
{
Console.WriteLine("你说:\"太好了,买一副!\"");
}
else
{
Console.WriteLine("你说:\"真遗憾,下次再买吧。\"");
}

这里的 ||,就像一个灵活的通融者,它的规则是:它两边的条件只要有一个为真,整个表达式就为真。
运算规则: 条件1 || 条件2,只要“条件1”或“条件2”中有一个是 true,结果就是 true。只有当两个都是 false时,结果才是 false。
短路特性: ||也有“短路”特性。如果它发现左边条件(isMember == true)已经是 true,它就会立刻得出“通过”的结论,而不会再去检查右边是否有优惠券(hasCoupon)的条件 。
&&和 ||这对儿条件运算符就像是编程世界里的逻辑积木,帮你搭建出各种复杂的判断条件。
相等和比较运算符
你可以把 == 和 ! = 想象成程序世界里的“大家来找茬”小工具:==负责找“相同”,找到就开心地喊“对!”(True);!=负责找“不同”,找到就得意地说“不!”(False)。它们的工作就是做出判断并给出一个非真即假的明确答案 。
在使用时,有一个非常重要的细节需要注意:一个等号 =和两个等号 ==有天壤之别。
-
=是赋值运算符,它的作用像是把东西放进盒子里。比如 int price = 1899;意思是“把数字1899装进名为pricer的盒子里”。
-
==是比较运算符,它的作用像是比较两个东西是否相同。比如 if (pricer == 1899)意思是“检查一下price盒子里的东西和1899一样吗?”
如果在该用 ==进行比较的地方误用了 =,程序逻辑就会出错。希望你可以在欢乐中牢牢记住 ==和 !=的用法!
| 运算符 | 读音 | 生活化比喻(好比) | 举个栗子 🌰 |
|---|---|---|---|
== |
等于 | “长得一模一样吗?” | 1899 == 1899 为 true(对,它俩都是1899) |
!= |
不等于 | “长得不一样吗?” | 1500 != 1899 为 true(对,它俩不一样) |
< |
小于 | “我比你矮/少吗?” | 1500 < 1899 为 true(对,1500比1899小) |
> |
大于 | “我比你高/多吗?” | 1899 > 1500 为 true(对,1899比1500大) |
<= |
小于等于 | “我不比你高/多吗?”(包含等于) | 1500 <=1500 为 true(对,我们一样“大”) |
>= |
大于等于 | “我不比你矮/少吗?”(包含等于) | 1500 >= 1500 为 true(对,我们一样“大”) |
- 比较枚举成员时,实际上比较的是其底层对应的整数值,枚举又是什么东西?我们以后再讲。
三、while循环(重复做一件事)*
就像重复数数:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"第{counter}次!");
counter++;
}
counter < 10是条件,只要满足就继续执行;counter++是让计数器每次加1,当条件为false(假)时会停止。
int counter = 0;
do
{
Console.WriteLine($"Hello 北海! The counter is {counter}");
counter++;
} while (counter < 10);
循环会在 while 前先测试条件,然后再执行后续 while 代码。 do while 循环首先执行代码,然后检查条件。
四、for循环(精确控制次数)**
就像排队买东西:
for (int i = 1; i <= 10; i++)
{
Console.WriteLine($"第{i}个苹果!");
}
int i = 1是初始化(从1开始);i <= 10是条件(循环到10为止);i++是每轮加1。
五、嵌套循环(生成表格)**
就像画网格:
for (int row = 1; row <= 3; row++)
{
for (char col = 'A'; col <= 'C'; col++)
{
Console.WriteLine($"({row}, {col})");
}
}
输出:
(1, A)
(1, B)
(1, C)
(2, A)
(2, B)
(2, C)
(3, A)
(3, B)
(3, C)
六、实战练习(求1到20中能被3整除的数之和)**
- 找出1到20中能被3整除的数(如3、6、9…);
- 把它们加起来,最后得到总和。
int sum = 0;
for (int i = 1; i <= 20; i++)
{
if (i % 3 == 0) // 如果i能被3整除
sum += i; // 把i加到sum里
}
Console.WriteLine("总和是:" + sum);
总和是:63

C#的if和循环到底在做什么?
| 概念 | 通俗解释 |
|---|---|
| if | 像开关,满足条件就执行代码 |
| else | 不满足条件就执行另一段代码 |
| while | 反复做一件事,直到条件不满足 |
| for | 精确控制循环次数(比如数1到10) |
| 嵌套循环 | 像画网格,外层循环控制行,内层循环控制列 |
- if和循环是编程的“基础工具”,就像搭积木一样,组合起来能做很多事;
- 多动手写代码,哪怕错了也没关系,编程就是不断试错的过程!
更多推荐




所有评论(0)