流程控制
我们至今写的代码都是一行接着一行,自上而下进行。但是有的时候我想根据程序中当时的环境执行不同的代码,或者有的时候需要重复执行某段代码。这两种方法就是需要用到流程控制中的分支和循环。
分支:有条件的执行代码
循环:重复执行相同的代码
让用户输入一个分数,根据分数的大小,在屏幕上显示是 大于50还是小于等于50
这个时候需要判断分数的大小就要用到比较运算符(布尔运算符)
int score=88;
score>50
布尔运算符
布尔运算符-处理布尔值
条件布尔运算符
布尔赋值运算符
goto语句
在程序中我们可以给代码加上标签,这样就可以使用goto语句直接调到标签的地方去执行
goto语句的语法
goto <labelName>;
实例:
int myInteger = 5;
goto myLabel;
myInteger ++;
myLabel://跳转的标签
Console.WriteLine(myInteger);
分支-if语句
if的语法
if(<test>)
<code executed if <test> is true>
先执行<test>
,如果结果是true就执行
案例:
bool var1 = true;
if(var1)
Console.WriteLine(var1);
if else语法
if(<test>)
<code executed if <test> is true>
else
<code executed if <test> is false>
如果if和else要执行的代码有多行,可以加上{}组成一个块
if(<test>){
<code executed if <test> is true>
}else{
<code executed if <test> is false>
}
三元运算符
语法
<test> ? <resultIfTrue> : <resultIfFalse>
示例
string resStr = (myInteger<10) ? "Less than 10":"Greater than or equal to 10"
switch语句
switch语句类似于if语句,switch可以用来将测试变量跟多个值
进行比较。switch的语法结构如下:
switch (<testvar>){
case <comparisonVal1>:
<code to execute if <testvar> == <comparisionVal1>>
break;
case <comparisonVal2>:
<code to execute if <testvar> == <comparisionVal2>>;
break;
...
case <comparisionN>:
<code to execute if <testvar>==<comparisionValN>>;
break;
default:
<code to execute if <testvar>!=<comparisionVals>>
break;
}
testvar这里不管直接放一个字面值还是变量,它的类型是数值类型跟char类型
do循环
语法结构
do{
<code to be looped>;
}while(<test>);
//<test>返回的是一个bool值(循环的条件判断)
注意,do while的while后有分号;
While循环
语法结构
while(<test>){
<code to be looped>
}
有关系式
1*1+2*2+3*3+...+k*k<2000
编一个程序,求出满足此关系式的k的最大值
static int maxNumless2000() {
int i = 1;
int sum = 0;
while(sum + i * i < 2000) {
sum = sum + i * i;
i++;
}
return sum;
}
for循环
语法结构
for(<initialization;<condition>;<operation>>){
<code to loop>
}
initialization是初始化,这里可以定义一个变量,也可以给变量赋值
condition是判断是否执行循环的条件
operation每次执行完循环都会执行operation代码
使用break立即跳出循环
使用continue,只会终止当次循环,继续运行下次循环
循环的中断 goto 可以直接跳到某一个位置
循环的中断 return 跳出循环(跳出函数)