目录
一、C#条件判断语句
1、if 语句
2、if else 语句
3、if else if 语句
二、C#分支语句
三、C#循环语句
1、for循环
2、foreach循环
3、while循环
4、do while循环
四、C#跳出循环
1、break
2、continue
3、goto
在 C# 编程中,if 语句主要用于条件判断。C# 中支持多种类型的 if 语句:
C# 中的 if 语句用于条件判断。其中包含一个布尔表达式,后面跟随若干要执行的代码。当布尔表达式为真时,后面跟随的代码才会执行。if 语句的语法格式如下:
if (布尔表达式) {
// 表达式为真时要执行的代码;
}
举例:
int num = 12;
// 使用 if 语句判断一个数字是不是偶数:
if (num % 2 == 0)
{Console.WriteLine("{0}是偶数", num);Console.ReadKey();
}
C# 的 if else 语句同样用于条件判断。它比 if 语句中多出了一个 else 语句,当布尔表达式为假时,执行 else 语句块中的代码。语法格式如下所示:
if (布尔表达式) {
// 表达式为真时要执行的代码;
} else {
// 表达式为假时要执行的代码;
}
举例:
Console.WriteLine("请输入一个数字:");
int num = Convert.ToInt32(Console.ReadLine());
// 使用 if else 语句判断用户输入的数字是奇数还是偶数:
if(num % 2 == 0){Console.WriteLine("{0}是偶数", num);
}else{Console.WriteLine("{0}是奇数", num);
}
Console.ReadKey();
C# 的 if else if 语句其实就是一个 if 语句后面跟若干个 else if else 语句。语句中可以包含多个条件表达式,程序会依次判断这些条件表达式。当条件表达式为真时则执行后面语句块中的代码,如果没有为真的条件表达式则执行 else 语句块中的代码,其语法格式如下所示:
if (布尔表达式 1) {
// 布尔表达式 1 为真时要执行的代码;
} else if (布尔表达式 2) {
// 布尔表达式 2 为真时要执行的代码;
} else if (布尔表达式 3) {
// 布尔表达式 3 为真时要执行的代码;
}
...
else {
// 当所有布尔表达式都为假时要执行的代码;
}
举例:
Console.WriteLine("请输入学生的成绩:");
int num = Convert.ToInt32(Console.ReadLine());
// 使用 if else if 语句来对学生成绩进行评定:
if (num < 0 || num > 100)
{Console.WriteLine("您输入的成绩有误!");
}
else if (num >= 0 && num < 60)
{Console.WriteLine("不及格");
}
else if (num >= 60 && num < 70)
{Console.WriteLine("及格");
}
else if (num >= 70 && num < 80)
{Console.WriteLine("中等");
}
else if (num >= 80 && num < 90)
{Console.WriteLine("良好");
}
else if (num >= 90 && num <= 100)
{Console.WriteLine("优秀");
}
Console.ReadKey();
C# 中的 switch 语句类似 if else if 语句,都可以根据表达式执行某个语句块。其语法格式如下:
switch (表达式) {
case value1:// 表达式的值为 value1 时,要执行的代码
break;
case value2:// 表达式的值为 value2 时,要执行的代码
break;
case value3:// 表达式的值为 value3 时,要执行的代码
break;
......
default:// 没有与表达式相匹配的值时,要执行的代码
break;
}
使用 switch 语句时必须遵守以下规则:
goto default
;
// 根据输入的成绩来评定成绩的等级:
Console.WriteLine("请输入学生考试的成绩(0~100的整数)");
int points = Convert.ToInt32(Console.ReadLine());
switch (points / 10)
{case 10:Console.WriteLine("优秀");break;case 9:Console.WriteLine("优秀");break;case 8:Console.WriteLine("良好");break;case 7:Console.WriteLine("及格");break;case 6:Console.WriteLine("及格");break;default:Console.WriteLine("不及格");break;
}
在某些情况下,我们需要重复执行某些代码,这时就需要用到 C# 中的循环语句。C# 中支持 for 循环、foreach 循环、while 循环和 do while 循环等循环语句。
使用 for 循环可以重复执行一部分代码,而且重复的次数是已知的,其语法格式如下所示:
for (初始化语句; 判断条件; 迭代器) {
// 要循环的代码;
}备注:
在某些情况下初始化语句可以省略,只保留后面的分号即可;
举例:
// 使用 for 循环输出 0 ~ 9 之间的数:
for (int i = 1; i <= 9; i++)
{Console.Write("{0} ", i);
}
(1)嵌套循环
在 C# 中,循环语句还可以嵌套使用。也就是说我们可以在一个 for 循环内再嵌套一个或多个 for 循环。
// 使用 for 循环输出一个九九乘法表:
for (int i = 1; i <= 9; i++)
{for (int j = 1; j <= i; j++){Console.Write("{0} x {1} = {2} ", j, i, i * j);}Console.WriteLine();
}
(2)无限循环
for 循环中,如果判断条件永远不会为假,那么循环将变成无限循环(也叫死循环)。我们在定义循环语句时应尽量避免这种情况的出现。示例代码如下:
for (; ;)
{ Console.WriteLine("死循环!");
}
C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下:
foreach (数据类型 变量名 in 数组或集合对象) {
// 循环体;
}
foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到foreach
定义的变量中,直到所有元素都成功取出后退出循环。
// 使用 foreach 循环打印数组中的所有元素:
int[] arr = new int[] { 1, 3, 6, 13, 5, 22, 33 };
foreach (int i in arr)
{Console.Write("{0} ", i);
}
Console.ReadLine();
在 C# 中,当迭代次数不确定的情况下,使用 while 循环多次迭代一部分程序。while 循环的语法格式如下所示:
while (表达式) {
// 要循环的代码;
}
while 循环的特点是:当表达式的判断结果为假时, while 循环一次也不会执行。另外,与 for 循环相同,while 循环也可以嵌套使用。代码如下:
// 输出九九乘法表:
int i = 1;
while (i <= 9)
{int j = 1;while (j <= i){Console.Write("{0} x {1} = {2} ", j, i, i * j);j++;}i++;Console.WriteLine();
}
Console.ReadLine();
在 C# 中,do while 循环同样用于多次迭代一部分程序。它与 for 循环 和 while 循环 不同的是,for 循环 和 while 循环 会在循环开始之前先判断表达式的结果,只有表达式的结果为真时才会开始循环,而 do while 循环会先执行一遍循环体中的代码,然后再判断表达式的结果。也就是说,不论表达式的结果如何,do while 循环至少会执行一次。do while 循环的语法格式如下:
do
{
// 循环体;
} while (表达式);
举例:
int i = 1;
do
{Console.Write("{0} ", i);i++;
} while (i <= 9);
Console.ReadLine();
与 for 循环和 while 循环一样,do while 循环也可以嵌套使用。下面我们来看一下如何使用 do while 循环输出九九乘法表:
int i = 1;
do
{int j = 1;do{Console.Write("{0} x {1} = {2} ", j, i, j * i);j++;} while (j <= i);i++;Console.WriteLine();
} while (i <= 9);
Console.ReadLine();
在使用循环语句时,我们也可以主动退出循环。C# 为我们提供了 break、continue 和 goto 三种方式来跳出循环。
break 语句它不仅可以用来终止 switch 语句,在循环语句中还可以用来跳出循环,执行循环体外的下一条语句。如果是在嵌套循环中使用,例如在内层循环中使用 break 语句,那么程序只会跳出内层循环,并不会影响外层循环的执行。
// 使用 for 循环输出 1~9 之间的数字,当输出到 5 时跳出循环:
for (int i = 1; i <= 9; i++)
{if (i == 5){break;}Console.Write("{0} ", i);
}
Console.ReadLine();
C# 中 continue 语句的工作原理与 break 语句类似,但是 continue 语句并不会跳出整个循环,而是跳过本次循环继续执行下一次的循环。
// 使用 for 循环输出 1~9 之间的数字,遇到 5 时跳过:
for (int i = 1; i <= 9; i++)
{if (i == 5){continue;}Console.Write("{0} ", i);
}
Console.ReadLine();
C# 中的 goto 语句也称为跳转语句,使用它可以控制程序跳转到指定的位置执行。不过并不建议在程序中多次使用 goto 语句,因为它会使程序变得更加复杂。
goto 语句的语法格式如下所示:
goto Labels;
语句块1;
Labels:
语句块2;说明:
程序会跳过“语句块1”直接执行“语句块2”。
想要使用 goto 语句来跳转程序,必须先在想要跳转的位置定义好一个标签(Labels),标签名称的定义和变量名类似,然后使用goto 标签名;
即可使程序跳转到指定位置执行。
goto 语句并不限于在循环中使用,其它的情况也可以使用。但是,goto 语句不能从循环外跳转到循环语句中,而且不能跳出类的范围。
// 使用 goto 语句将程序跳转到指定位置执行:
int count = 1;
login:Console.WriteLine("请输入用户名:");string username = Console.ReadLine();Console.WriteLine("请输入密码:");string userpwd = Console.ReadLine();
if (username == "jerry" && userpwd == "123")
{Console.WriteLine("登录成功");
}
else
{count++;if (count > 5){Console.WriteLine("用户名或密码错误次数过多!");}else{Console.WriteLine("用户名或密码错误!");// 返回login标签处重新输入用户名和密码goto login;}
}