由于微信公众号改变了推送规则,为了每次新的推送可以在第一时间出现在您的订阅列表中,记得将本公众号设为星标或置顶喔~
简单介绍C#的条件和循环语句,为编程小白铺路,同时提出几点注意事项,为大佬敲警钟~
🌿前言
笔者也是计算机小白出生,所以也非常能够感受到小白学习的状态,本文简单介绍C#的条件语句(if、switch)和循环语句(for、foreach、while、do-while),旨在为小白铺路,早日晋升大佬!
🍀条件语句
C#和大部分编程语言一样,条件语句主要有if和switch两种,对于测绘程序设计比赛,很少会有用到switch语句的地方。
if语句
【一般形式】
if (条件表达式1)
{
...
}
else if (条件表达式2)
{
...
}
else
{
...
}
if语句适合绝大多数情况,需要注意if不满足时才会判断else if,如果if条件满足了,那么紧跟着的else if就不会执行。
【示例代码】–判断区间
double a = 0, b = 1;
double x = Math.Pow(Math.PI, 0.5);
if (x < a)
{
Console.WriteLine("x在区间左侧");
}
else if (x > b)
{
Console.WriteLine("x在区间右侧");
}
else
{
Console.WriteLine("x在区间内");
}
在某些情况下,可以给较难编写的条件放到else语句里,以减少敲错的机会同时节约时间。
switch语句
【一般形式】
switch (表达式)
{
case value1:{语句块1} break;
...
case valueN:{语句块N} break;
default: {默认语句} break;
}
switch适合参数表达式有多个值的情况,其形式是switch参数的后边跟一组case子句,可以用default捕捉所有不符合case标识的值。每个switch语句块结束必须使用break语句
【示例代码】–“JQKA出牌”
int cardNumber = 1;
switch (cardNumber)
{
case 13: Console.WriteLine("King"); break;
case 12: Console.WriteLine("Queen"); break;
case 11: Console.WriteLine("Jack"); break;
case 1: Console.WriteLine("Ace"); break;
default: Console.WriteLine(cardNumber); break;
}
🌸循环语句
C#有for循环、foreach循环、while循环和do-while循环。其中for循环适合遍历数组等事先知道循环次数的情况;foreach循环适合不需要数组下标参与计算的情况下遍历数组,在C/C++编程语言中无;while循环和do-while循环适合未知循环次数情况下的操作,通常见于迭代算法,但处理不慎容易掉入死循环。
for循环
【一般形式】
for (初始值; 退出条件; 每次循环后做)
{
语句块...
}
【示例代码】–for循环输出“九九乘法表”
for (int i = 1; i <= 9; i++)
{
for(int j = 1; j <= i; j+=1)
{
Console.WriteLine($"{j} x {i} = {i*j}");
}
Console.WriteLine();
}
foreach循环
foreach循环是C#相对于C/C++编程语言的一种比较新式的循环,能够不使用下标来遍历数组,也就是说不需要多写xxx[i]
即中括号了,直接取到数组的值。
【一般形式】
foreach (类型 变量 in 集合)
{
语句块..
}
【示例代码】
string[] technologys =
new string[] { "GNSS","RS","GIS" };
foreach (string t in technologys)
{
Console.Write($"{t}\t");
}
while循环
while循环通常在迭代算法中出现。
【一般形式】
while (条件表达式)
{
语句块
}
【示例代码】–倒计时
int num2 = 3;
while (num2 >= 1)
{
Console.WriteLine($"倒计时:{num2}");
num2--;
}
do-while循环
do-while和while循环最大的区别就是do-while循环是先做后判断,这样就意味着它至少会执行一次语句体
【一般形式】
do
{
语句块
} while (条件表达式);
【示例代码】–倒计时
int num2 = 3;
do
{
Console.WriteLine($"倒计时:{num2}");
num2--;
} while (num2 >= 1);
break与continue语句
很好理解,break,就是打断、退出的意思,直接退出循环(循环终止退出);continue是跳过当此循环(当前次循环跳过,下一次继续)。
【示例代码】
小白自己切换注释即可看到效果。
for(int i = 0; i <= 5; i++)
{
if (i == 3)
{
//break;
continue;
}
Console.WriteLine(i);
}
🍗注意事项[易错]
省略大括号的情况
需要特别注意的是,无论是if语句还是for语句…,在省略其大括号时,默认紧跟着的一句代码在if/for语句内。
该错误容易出现在:原本for语句内仅有一句代码但是无大括号包裹,新增加一句代码却忘记添加大括号。
【示例代码】–错误的方式增加分割线
for (int i = 3; i >= 1; i--)
Console.WriteLine($"倒计时:{i}");
Console.WriteLine($"---我是分割线---");
所笔者不建议省略大括号来给自己埋坑~但咱也避免不了会踩坑。
条件写错、写反
常见的写错就是a\<x\<b
直接写成a\<x\<b
,这是条件反射,只能平时练习时留一个心眼。
写反有时候也是比较常见,比如你会发现,调试到while循环根本进不去,就可以怀疑是否条件写反了,看的屏幕时间长了发懵也很正常~
if-else考虑不足
说白了就是if的条件没有考虑周全,导致多种情况都进入else了,出现了某些测试样例的计算错误。这一点很难排查也很难看出来。笔者一般的做法是只写else-if结束或者是else内不做任何事情来避免。
浮点数直接判断是否相等
这个对于编程小白也十分容易出错,即两个浮点数直接a==b
来判断。由于计算机存储浮点数不精确、有误差(应该是称为舍入误差),所以对于判断两个浮点数是否相等的判断,需要对其求差取绝对值小于某个值时,就认为其相等;即Math.Abs(a-b) < 0.0000001
。
while循环遗漏了自增条件
这就是本文上面提到的,while循环操作不慎会进入到死循环的情况,一般由于自增条件会在while的最后去写,当语句块功能完成之后,长叹一气,终于写完啦,然后尝试运行,发现一直没有出结果或者一直出结果,大概率就是自增条件忘记加了~
🌹结语
-
笔者为测绘遥感方向的学习者,愿意结交志同道合的伙伴,欢迎关注公众号与笔者一起交流学习~
-
对于条件语句,注意条件语句的写法、注意考虑周全…即可~
-
对于循环语句,for循环、foreach循环、while循环这三种掌握了能适应绝大多数情况~
-
路虽远,行则将至;事虽难,做则必成。希望认真学习的你能够有所收获~
-
本公众号的原创成果,在未经允许的情况下,请勿用于任何商业用途!
-
如果本文有幸可以帮到您,欢迎您的点赞👍、收藏⭐与关注❤;您的点赞👍、收藏⭐与关注❤是我创作的最大动力~