4 深入三大分支结构
4.1 顺序结构
没啥好说的,略过
4.2 选择结构
4.2.1 if-else
最常见的选择结构。if后接的是一个逻辑表达式,只要表达式的值不为0则进入if。这里没有什么难点,在编程时使用if嵌套时应注意分清逻辑顺序(当然如果你书写习惯够好就应该没有这种困扰)。
4.2.2 switch
switch平时几乎不会出现,比较麻烦而且完全可以用if代替。不过有一点需要注意的就是如果不采用break跳出的话swicth会执行选择到的case后的所有case下的语句,比如:
switch (char1)
{
case 'A':
cout << "You entered A. \n";
case 'B':
cout << "You entered B. \n";
case 'C':
cout << "You entered C. \n";
default:
cout << "You did not enter A, B, or C!\n";
}
在这段代码中,如果你输入了A,那么它的输出结果将会是
也就是说当某个case判定为真后之后的所有case都会执行。所以如果需要使用switch,请在适当时候加上break。
4.3 循环结构
循环结构可以是三大结构里最重要的了,在这里我建议新手多停留一段时间刷题,可以打下坚实的基础,快速进入状态。(oj题单我会放在本章末尾)
4.3.1 for循环
for( Init ; BreakCondition ; Operation )
for循环的主体由三部分构成,分为Init,BreakCondition和Operation。
- Init语句会在循环第一次开始时执行且只执行这一次,一般情况下可以作为循环的初始化,可留空。
- BreakCondition是循环终止的条件,不拘于i<a,i>=a等语句,本质上是一个逻辑表达式,只要表达式的判定为0即结束循环。
- Opreation为每次循环时做的操作,第一次进入for语句不执行,一般用来进行循环的跳跃。
for(int i = 1;i < 10;++i){
sum+=i;
}
以上述代码为例,一个完整的循环过程为先进入for语句,第一次进行Init段的操作即初始化i,然后对 i<10 进行判断,为真则进入循环主体,执行完主体的操作后则返回到for语句中。先判断Condition再执行Operation操作。 (这里注意如果condition判断退出循环则本次不进行Operation)
总的来说,在面对for语句时,不能只拘泥于for(int i=1;i<X;++i)的基础语句,而是要深刻了解for语句的本质,在面对部分读程序题时才能不落入陷阱。
4.3.2 while循环
while循环有两种,while()和do……while(); 本质来说没有太大区别。while的规则比较简单,while( Condition )基本和for( ; Condition ; )一样,不再赘述。
4.3.3 break,continue,goto
break:直接结束循环
continue:进入下个循环,即立刻返回到for(),while()或者do语句
goto:转移到被标记语句(不用多了解也尽量不要使用)
4.3.4 推荐刷题
洛谷 1047、1075、1304、1024、1002(有序)