----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
l 循环结构while
l 循环结构do-while
l 循环结构for
l 跳出循环语句
l 三元表达式
l 小节和goto
1. while 循环结构
语法:while (循环条件) //循环条件的运算值必须是bool类型
{
循环内容(循环体)
}
特点:先判断,后执行
执行过程:先判断循环条件,如果循环条件的运算值为true,则执行循环体,执行完后再次判断循环条件;如果最初判断循环条件的运算值为false,则直接跳出该语法(不执行循环体)。
注意:循环体中一定要有能使循环条件运算值改变为false的语句,这样程序才不会形成死循环。如下:
//n次循环中,如果i的值为0,则循环条件为i<n;
//n次循环中,如果i的值为1,则循环条件为i<=n;
//因为i控制着循环次数,所以i又叫循环变量
Console.WriteLine("请输入想要循环的次数");
int n =Convert.ToInt32(Console.ReadLine());
int i = 0;
while (i < n)
{
Console.WriteLine("循环中。。。");
i++; // 这一句用于改变循环条件,使其运算值可以为false,防止形成死循环
}
执行过程图:
例子:
Console.WriteLine("这道题你会做了吗?");
string input = Console.ReadLine();
if (input == "会了")
{ Console.WriteLine("放学"); }
else
{
int i = 1;
while (i <= 5 && input != "会了")
{
Console.WriteLine("好吧,我再讲一遍");
Console.WriteLine("这道题你会做了吗?");
input = Console.ReadLine();
i++;
}
Console.WriteLine("OK,放学!");
}
2.do while 循环结构
语法:
do {
循环内容(循环体)
}
while(循环条件);
执行过程:先执行循环内容,然后判断循环条件,如果运算值为true,则转向循环内容从新执行,再接着判断,知道循环条件运算值为false,则此程序执行完成。
While循环中,循环条件一开始为false,循环体不会执行,而do while 即使循环条件为false,循环体也至少执行一次。
3.循环结构中,要考虑到各种条件改变,防止出现死循环。
string input, pass;
bool flag = false;
do
{ //如果在这儿没有这句话,这个程序,将在第一次用户输错密码或用户名后出现 flag = false; // bug,即flag的值一直为true,违背了非死循环程序中循环条件可能运算出false的定理
Console.WriteLine("请输入您的用户名");
input = Console.ReadLine();
Console.WriteLine("请输入您的密码");
pass = Console.ReadLine();
if (input != "admin" ||pass!="888888")
{Console.WriteLine("您输入的用户名或密码错误,请重新输入");
flag = true;
}
} while (flag);
Console.WriteLine("登录成功");
4.程序的活学活用
string input="";
int input1 = 0, input2 = 0;
bool flag=false;
do
{
try
{
Console.WriteLine("请输入一个数字");
input = Console.ReadLine();
input1 = Convert.ToInt32(input);
if (input2 < input1)
{ input2 = input1; }
}
catch
{
if (input != "end")
{
Console.WriteLine("您输入的程序错误");
input = "end"; //为了跳出循环结构
flag = true; //为了跳出循环后不执行input2的输出
}
}
}
while (input != "end");
if (flag = false)
{ Console.WriteLine(input2); }
Console.ReadKey();
5.for循环结构
语法:for(表达式1;表达式2;表达式3)
{循环体}
执行过程:先执行表达式1,然后判断表达式2,如果判断的运算值为true,则执行循环体,然后跳转执行表达式3,执行完后再次判断表达式2,如果表运算值为true,则执行循环体,再跳转表达式3,再判断表达式2...,直到表达式2运算值为false则直接跳出该结构,执行后边的程序。
简而言之:表达式1相当于变量的声明和赋值,只会执行一次,表达式2相当于循环条件,表达式3相当于循环变量。
执行图:
6.for 循环结构的例子:
矩阵九九乘法表
Console.WriteLine("矩阵九九乘法表");
for (int i = 1; i <= 9; i++) //循环嵌套
{ //外循环
for (int j = 1; j <= 9; j++)
{
Console.Write("{0}X{1}={2}\t", i, j, i * j);
//内循环
}
Console.WriteLine(); //外循环内容
}
Console.ReadKey();
梯阵九九乘法表
Console.WriteLine("梯阵九九乘法表");
for (int i = 1; i <= 9; i++) //外层循环控制行号,i为行号
{
for (int j = 1; j <= i; j++) //第i行第j个式子
{
Console.Write("{0}X{1}={2}\t",i,j,i*j);
}
Console.WriteLine();
}
Console.ReadKey();
输入一个数字,输出可能的加法组合。
Console.WriteLine("请输入一个数字");
bool isnumber = false;
int number = 0;
while (isnumber == false)
{
try
{
number = Convert.ToInt32(Console.ReadLine());
isnumber = true;
}
catch
{
Console.WriteLine("您输入的不是数字,请重新输入");
isnumber = false;
}
}
for (int i = 0; i < number + 1; i++)
{
Console.WriteLine("{0}+{1}={2}", i, number - i, number);
}
Console.ReadKey();
已知次数一般使用for循环。
7.跳出循环语句
1))break
用于while/do while /for循环结构中,退出当前循环。
执行过程图:
注意,break跳出的是当前所在的循环结构。
2))continue
用于循环结构中,程序执行到continue时,立即结束本次循环(即,不再执行continue下面的程序)执行下一次循环,对于while和do while 循环结构来说,就是重新对循环条件进行判断,如果值为true则再次进入循环结构,直到遇到continue如此往复;而对于for循环结构来说,continue之后程序跳转到表达式3,即循环变量,再判断循环条件...
因此,如果不想让有continue的循环结构形成死循环,应该在continue之前写入循环变量。
执行过程图:
8.三元表达式
语法:表达式1?表达式2:表达式3
要求表达式1运算值为bool类型。
执行过程:先执行表达式1,如果运算值判断为true,则输出表达式2的运算值(即表达式2的值为整个三元表达式的值),如果运算值判断为false,则输出表达式3的运算值(即表达式3的值为整个三元表达式的值)。
表达式2和表达式3的类型一定要兼容。
例如: int a = 1,b=2;
Console.WriteLine(a>b?a:b);
Console.ReadKey();
9.小节和goto
顺序结构:语句按顺序执行
分支结构:语句在满足特定的条件下执行
if if-else, if-else if ,switch-case, 表达式1?表达式2:表达式3
循环结构:语句在满足特定下条件执行多次
while , do while , for
跳转语句:
break,continue,goto(可在程序内跳转到任何标签)
goto 的基本语法:
goto 标签;
标签:
例如:
Console.WriteLine("输入的第一句话");
goto label;
Console.WriteLine("输入的第二句话");
Console.ReadLine();
Console.WriteLine("输入的第三句话");
label:
Console.WriteLine("输入的第四句话");
Console.ReadKey();