c#-循环

前言

  对于一些事件,我们判断一次并不能得出我们想要的结果,那么怎么办呢?由此我们引出了循环这一功能。那循环一共有几种,这个您了解吗?想要更了解的就往下看吧!

While-先判断在执行循环体

  我们来做一个例题:2006年学员是80000人,每年增长25%,请问按此增长速度,到哪一年学员人数将达到20万人。

double student = 80000;
int year = 2006;

while (student<200000)
{
    student *= 1.25;
    year++;
}

Console.WriteLine("{0}年是{1}人", year, student);
Console.ReadKey();

  这个例题中我们用到了While循环,先判断学生是否小于20万,如果小于的话执行循环体,如果不小于的话直接输出。

DO While-先执行一次循环体,然后再判断条件是否成立

  我们再来做一个例题:要求用户输入用户名和密码,只要不是admin,88888就一直提示用户名或密码错误。

string name = "";
string pwd = "";

do
{
    Console.WriteLine("请输入账号");
    name = Console.ReadLine();

    Console.WriteLine("请输入密码");
    pwd = Console.ReadLine();

} while (name != "admin" || pwd != "88888");

Console.WriteLine("程序结束");
Console.ReadKey();

  这道题中我们应该使用Do While循环,先输入用户名和密码,判断是否是要求输入的内容,如果不是,需要重新输入。所以,Do While的作用就是先执行循环体,再判断条件是否成立,成立的话直接输出,不成立重新执行。

小结

  While和Do While循环有一个共同点,就是我们都不知道要循环的次数,那要是知道循环的次数了,应该用什么呢?没错就是接下来的for循环。

For

  求1-100之间的偶数和。

int sum = 0;

for (int i = 0; i <= 100; i++)
{
    if (i % 2==0)
    {
        sum += i;
    }
}

Console.WriteLine("总和为{0}",sum);
Console.ReadKey();

  这种题中,我们大概知道要循环的次数,所以我们使用for循环。

小扩充Forr

  将一个字符串数组的元素的顺序进行反转。(“我”,“是”,“好人”)(“好人”,“是”,“我”)。

string[] text = { "我", "是", "好人" };

for (int i = text.Length  - 1; i >= 0; i--)
{
    Console.Write(text[i]+"\t");
}

Console.ReadKey();

  没错,Forr的作用就是进行反转,与i++不同,而是i- -。

Break-用于循环中,退出当前循环

  求:1-100之间的整数相加,得到累加值大于20的当前数(比如:1+2+3+4+5+6=21)结果6。

int sum = 0;

for (int i = 1; i <= 100; i++)
{
    sum += i;

    if (sum > 20)
    {
       Console.WriteLine("{0}----------{1}", sum, i);
       break;
    }
}

Console.ReadKey();

  如果和大于20的话,就输出当前的值,然后跳出循环,如果和不大于20,继续当前循环。

Continue-跳到循环条件位置

  求:1-100(含)之间的除了能被7整除之外所有整数的和。

int i = 0;
int sum = 0;

while (i < 100)
{
    i++;
    if (i % 7 == 0)
    {
        continue;
    }

    sum += i;
}

Console.WriteLine("总和为{0}", sum);
Console.ReadKey();

  该题中,如果是7的倍数,通过continue就会自动跳到循环的位置走i++的代码。

总结

  这是循环的基本知识,要区分清楚什么情况下使用哪种循环,是否需要使用break和continue。

猜你喜欢

转载自blog.csdn.net/m0_37508531/article/details/80159723