测绘程序设计|C#条件与循环结构|易错点

由于微信公众号改变了推送规则,为了每次新的推送可以在第一时间出现在您的订阅列表中,记得将本公众号设为星标或置顶喔~


  简单介绍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的最后去写,当语句块功能完成之后,长叹一气,终于写完啦,然后尝试运行,发现一直没有出结果或者一直出结果,大概率就是自增条件忘记加了~

🌹结语

  1. 笔者为测绘遥感方向的学习者,愿意结交志同道合的伙伴,欢迎关注公众号与笔者一起交流学习~

  2. 对于条件语句,注意条件语句的写法、注意考虑周全…即可~

  3. 对于循环语句,for循环、foreach循环、while循环这三种掌握了能适应绝大多数情况~


  • 路虽远,行则将至;事虽难,做则必成。希望认真学习的你能够有所收获~

  • 本公众号的原创成果,在未经允许的情况下,请勿用于任何商业用途!

  • 如果本文有幸可以帮到您,欢迎您的点赞👍、收藏⭐与关注❤;您的点赞👍、收藏⭐与关注❤是我创作的最大动力~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小 y 同 学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值