大家好,欢迎查看我的学习笔记,在昨天我学习了条件判断语句,也做了一些相关的代码题,对如何在c#中进行条件判断也有了一定的理解,那么我将开启下一篇篇章---循环。循环的意思我就不再解释了,相信大家也都明白这个词的意思。而在c#里,当我们的代码需要执行很多次的时候,就需要用到循环。这一篇章没有那么多,但却至关重要。我将在此介绍我们常用的几种循环体,话不多说,我们开始吧。

1.while()循环

        while循环是一种控制流语句,用于在条件为真时重复执行代码块。在学习他之前我们先来说两个控制语句continue和break。continue语句就是在一个循环里执行到它的时候只会跳出他所在的循环,剩下的会继续执行,而break则是直接跳出整个循环。对这两个不太熟悉的下面会举例子,所以不要慌。while循环的基础语法结构如下:

while (true) //true就是永远成立,一直执行{}
{
    Console.WriteLine("死循环");
    break; // 跳出死循环 ,只会执行一次
}

        借着上面的结构中,我们来了解一下while循环的执行流程。当我们写了一个while循环之后,程序会判断while后面的括号里的条件是否为真,如果条件为真,则执行循环体内的代码,就是大括号里面的代码部分。在执行完循环体后,会再次检查条件,这个过程会一直重复,直到条件变为假。那不难看出,上面我给出的代码其实是一个死循环,因为他的判断条件是永远成立的,但我在循环语句里加了break语句,这样就终止掉了死循环,感兴趣的同袍可以把这条注释掉看看效果怎么样。而死循环在我们以后编程的过程中也挺重要,因为他能帮我们实现多次的人机交互。

        我们来看一个简单的例子:

 while (true)
 {
     Console.WriteLine("请输入yes/no");//如果输入的是yes,一直输入,输入为no的时候,跳出循环
     string name = Console.ReadLine();//等待用户输入的一个过程
     if (name == "no")
     {
         break;
     }
 }

        这段代码就是请求用户输入,如果用户不输入no,那么这个程序就会一直请求用户输入,直到用户输入no后停止。具体的效果如下:

        接下来我们来说一下在while()循环里需要注意的事项。首先,循环体内必须包含改变循环条件的语句,否则就可能导致无限循环,就像上面那个死循环一样。其次,条件表达式可以是任何返回布尔值的表达式。最后,循环体可以是单条语句,这个时候就可以省略掉大括号,但平时不推荐这样做哦~

2.while循环和条件判断语句的嵌套使用

        昨天我们学习了if条件判断,这个时候就派上用场了,看标题就知道,他们可以在一块嵌套使用,话不多说我们直接上例子:

//例子:求0-100之间偶数和
int sum1 = 0;
int m = 0;
while (m < 101)
{
    if (m % 2 == 0)
    {
        sum1 += m;
    }
    m++;
}
Console.WriteLine(sum1);

在这个例子里,我们要求0-100之间所有的偶数和,就可以用一个循环,不停的输出0-100的数,但是这样也不行,因为有要求是得偶数,那我们就要用到一个条件判断来判别现在输出的数是不是偶数,是的话就加到结果里,不是就不加,最后输出结果就行。

        再来一道吧,趁热打铁!!

  ////打印出前5个0-100之间能够被三整除的偶数
 int n = 0;
 int count = 0;
 while (n < 101 && count < 5)
 {
     if (n % 3 == 0 && n % 2 == 0)
     {
         Console.WriteLine(n);
         count++;
     }
     n++;
 }

在这个例子里,我们就是比上个例子多了几个限制条件,其他的本质上都一样,大家可以自己跑一下。

3.巩固一下对上面提到的continue和break的认识

        我们直接上例子吧!!

  //// continue:继续,不会跳出循环,指挥跳出当前循环,后续的循环继续执行
  //// break:跳出整个循环
  int p = 0;
  while (p < 4)
  {
      p++;
      if (p == 2)
      {
          continue;   //思考,换成break会变成怎么样
      }
      Console.WriteLine(p);  //输出 1 3 4

  }

我们来研究一下这个例子。我们定义p的值为0,当p小于4的时候进入循环,执行p++操作,然后判断,如果p的值为2,我们就跳过这次循环直接进行下一次,如果不是,那我们就正常走下面的输出代码。我也给大家留了个思考,如果把continue换成break的话,结果会怎么样,大家可以在评论区讨论哦~

        然后再给大家留到题吧,大家可以自己试着写一下。

 //例题:输出1-100之间所有的偶数,要求用到continue语句
 int q = 0;
 while (q < 101)
 {
     q++;
     if (q % 2 != 0)
     {
         continue;
     }
     Console.WriteLine(q);

 }

4.do...while循环语句

        接下来我们来介绍一下do...while循环。它是一种后测试循环结构,与while循环的主要区别在于它会先执行循环体,在检查条件是否满足。这意味着循环体至少会执行一次,即使条件一开始不成立也会照样先执行一次。do...while循环的基础语法结构如下:

 //while 先判断条件,再去执行
 //do ...while: 先去执行一次,再条件判断,最起码执行一次
 do
 {
     Console.WriteLine("do ...while流程控制");
 } while (false);

在上面的代码里,大括号括住的部分依旧是循环体代码,即需要重复执行的语句块。而条件表达式在后面放着,在每次循环结束后判定是否还满足这个表达式,满足就继续循环,否则就退出。

        do...while循环的执行流程如下:首先无条件执行一次循环体内的代码。其次,检查条件表达式里的值是否为真,若为真则再次执行循环体内的代码,否则就退出循环。

        do...while和while的区别就是while循环需要先检查条件,代码可能一次都不执行。而do...while循环则是至少执行一次,执行完在判断要不要接着执行。

        do...while有以下注意事项:第一,要确保循环体内有改变条件的语句,避免无限循环。第二,条件表达式后的分号不能省略。第三就是逻辑复杂的条件可能会导致代码可读性下降,需要合理拆分。

我们还是看一个例子:

//例子,使用do...while循环,使用户输入一个整数,,如果用户输入的不是正数,接刷新循环,是的话结束
int num;
do
{
    Console.WriteLine("请您输入一个正数");
    num = int.Parse(Console.ReadLine());
} while (num < 0);  //num小于0的时候,执行{}

上面代码的输出结果如下:

5.for循环

        最后我们来看一下for循环。在c#中,for循环是一种常用的迭代结构。一般情况下,在我们大概知道循环次数的时候我们就可以使用for循环。他的语法如下:

for (初始化表达式; 条件表达式; 迭代表达式)
{
    // 循环体代码
}
 

        接下来我们对上面的各项内容做一个解释。初始化表达式就是在循坏开始时执行一次,通常用于声明和初始化循环变量。条件表达式则是在每次迭代前检查,若条件为真,则执行循环体,否则就退出循环。迭代表达式则是在每次循环体执行后执行,通常用于更新循环变量。

我们来举个例子就一目了然:

// 打印数字0到9
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}
 

运行结果如下:

6.嵌套for循环

        for循环还可以嵌套使用,常用于处理多维数据,至于什么是多维数据,等我们后面学完存储结构在讲。还是看一个例子:

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
    {
        Console.WriteLine($"i={i}, j={j}");
    }
}
 

        再补充一下,for循环也可以实现死循环。具体的实现方法是将他的条件表达式设置为true,但一般不建议这样使用。

for (;;)
{
    Console.WriteLine("无限循环");
    // 通常配合break语句退出
    if (条件) break;
}
 

        最后说明一下我们for循环的注意事项就结束了!

        对于for循环来说,我们循环变量的作用域仅限于for循环内部。一定要避免修改循环变量导致逻辑错误,在用的时候一定要先理清楚逻辑哦。

        好了今天的笔记到此结束,介于昨天加上例题文章体量有点大,今晚就先不加了,如果有需要可以在评论区说一下,主播再加上嘿嘿!明天周末了,祝大家周末愉快,我们明天见!

更多推荐