C#从零开始学习笔记---第四天
大家好,欢迎查看我的学习笔记,在昨天我学习了条件判断语句,也做了一些相关的代码题,对如何在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循环内部。一定要避免修改循环变量导致逻辑错误,在用的时候一定要先理清楚逻辑哦。
好了今天的笔记到此结束,介于昨天加上例题文章体量有点大,今晚就先不加了,如果有需要可以在评论区说一下,主播再加上嘿嘿!明天周末了,祝大家周末愉快,我们明天见!
更多推荐
所有评论(0)