下面我们来看一下另外一个分支语句switch case语句。通常我们可以认为switch case语句只是阶梯if语句在某些特殊情况下的一种替换语句,任何switch case语句都可以用阶梯if语句替换,但对于switch case语句来讲,它只能根据某个值进行条件选择,只能适合在某些情况下执行分支语句。下面是switch case语句的语法和相关示例。
语法
switch(选择变量)
{
case 值1:
如果变量等于值1,执行的语句块
break;
语句块
case 值2:
如果变量等于值2,执行的语句块
break;
case 值3:
如果变量等于值3,执行的语句块
break;
……
default:
如果上面条件都不满足,执行的语句块
}
示例
还是给女友生日送花n朵
switch(n)
{
case 11:
一心一意
break;
case 19:
天长地久
break;
case 99:
天荒地老
……
break;
default:
分手吧
}
switch case语句中也包括的元素比较多,其中包括选择变量、case关键字、break关键字、default关键字等。switch单词含义是“切换”,case是“情形”,那么不难归纳出,此语句有点像扳开关,扳到那里就执行那里。执行在进入switch case语句后从满足条件的case语句开始执行,直到该case语句的break语句,随后执行将退出switch case语句。当执行进入switch case语句后,如果所有的case语句条件都不满足,那么就执行default后面的语句,如果此时没有default语句则退出switch case语句。电源开关使电流产生分支,switch case语句可以使程序执行流产生分支,如前所述,它具有多重if语句的效果。使用switch case语句还应注意的问题:
switch括号里的选择变量是可以是数字、字符、字符串变量或表达式。
switch语句可以包含任意数目的case语句,每个case语句后面必须带有break语句。default只有一个,且可以省略。
case后的值只有一个,不能重复,并以冒号结束。示例:
static void Main(string [] args)
{
Console.WriteLine(“请输入你的年龄:");
string age=Console.ReadLine();
switch(age)
{
case "20":
Console.WriteLine("二十弱冠");
Console.WriteLine("读论语,看三国");
break;
case "30":
Console.WriteLine("三十而立");
Console.WriteLine("论时事,做英雄");
break;
case "40":
Console.WriteLine("四十不感");
Console.WriteLine("潜其心,观天下");
break;
default:
Console.WriteLine("你输入的年龄是{0}",age);
break;
}
}
switch case语句在某些情况下实现多路分支非常方便,因此它一般用在三路以上的分支执行情况下。使用switch case语句时一定要注意case后面跟的必须是常量或常量表达式,以冒号结束而不是分号,而且case语句后一定要跟上break语句,这一点和Java及C++是不相同的。除了if、switch case语句外,能产生分支的还有一个条件运算符(? :),此运算符可以根据布尔型表达式的值返回两个值中的一个,其定义语法如下:
条件?表达式1:表达式2
如果条件为true那么就会计算表达式1的结果,如果条件为false就会计算表达式2的结果。使用条件运算符,可以更简洁、雅观地表达那些要求使用if else结构的计算,条件运算符本身也是简单if else语句的一种替代写法。条件运算符通常用在当某个条件满足时就为某个变量赋值的情况,如下例所示,当b不为零时将计算a除以b的值,当b为零时计算是没有意义的,所以直接返回-1:
using System;
namespace Test
{
class Program
{
static void Main(string [] args)
{
double a=1,b=1;
double r=b!=0?a/b:-1;
Console.WriteLine("商为{0}",r);
}
}
}
与上面条件运算符表达式“b!=0?a/b:-1”等价的if语句为:
if(b!=0)
r=a/b;
else
r=-1;
你可以利用等价if语句来理解条件运算符。
循环语句
循环语句通常用于完成某些重复的操作,比如我们要输出一万个“我爱C#”,那么用我们前面学的知识要写Console.WriteLine一万遍,很显然那是很傻的做法。C#和其他编程语言一样为我们提供了循环语句用于完成某些算法重复操作的部分。C#中循环语句,它们是while语句、do while语句、for语句、foreach语句四种。
while语句:
语法:
while (条件)
{
循环体语句
}
示例
说一万个我爱你:
int n=0;
while(n<10000)
{
Console.Write("我爱你");
n++;
}
while后面括号里面的条件和if语句后面括号里的条件一样都是关系表达式。循环体语句也可以由一句或多句执行语句组成。对于while语句的执行顺序是:先判断循环条件,条件为真则进入循环体,完成操作语句,再判断循环条件,再进入循环体,如此循环往复,直到条件表达式为false,则退出循环执行循环后面的语句。