《C与C++程序员面试宝典》第5章流程控制.pdf
《《C与C++程序员面试宝典》第5章流程控制.pdf》由会员分享,可在线阅读,更多相关《《C与C++程序员面试宝典》第5章流程控制.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 流 程 控 制流程控制是程序的基本问题。通过流程控制编程者可以完成业务逻辑,模块的整合等。在 C/C+中,程序的基本结构分为顺序、循环、分支等3 类。在编程的时候,通过判断、分支和循环来对程序的流程进行控制,很多程序在设计的时候也会做出流程图,以方便开发者更好地理解程序的流程,更准确地判断采取怎样的控制方式。5.1 条 件 语 句C/C+中,表达式的返回值都可以用来判断真假,除非没有任何返回值的void型和返回无法判断真假的结构。当表达式的返回值不等于。时,它的判断就是“真”,否则就是“假”。一个表达式可以包含其他表达式和运算符,并且基于整个表达式的运算结果可以得到一个真或假的条件值。
2、当一个表达式在程序中被用于检验其真或假的值时,称它为条件语句。面试题5 9条件语句有哪几种形式【出现频率】【关键考点】条件语句的概念;条件语句的几种形式。【考题分析】条件语句是根据特定的表达式来判断是否真的有条件来执行另外的一些语句,条件语句有3 种 形 式,if、ifelse和 ifelse ifelse形式,其中后两种形式带有条件分支。最简单的if条件语句示例代码如下:if(condition)/condition 为判断条件(Statement)其中condition就是判断条件,它返回一个bool值,如果为true就执行statement语句,判断条件必须用()括起来,它可以是一个表达
3、式或者一个初始化声明。例如:if(a+b c)/判断条件用括号括起来(M第5章流程控制if(int a=compute_value()判断条件用括号括起来(Mi f 语 句 的 else分支可以将一些条件语句放在一起形成一个执行语句序列。示例代码如下:if(condition)条件判断(statementlelse 当if条件判断不通过时执行(statement2)如果condition为 真,则执行statementl;否则,执行statement2。If,else ifelse条件分支代码示例:if(minVal ivec i)判断条件(M)else if(minVal=ivec i)/分
4、支 1(+occurs;else/分支 2(minVal=iveci;occurs=1;这样就可以实现多条件的判断,根据不同的条件来选择要执行的功能代码,这种方式常常用来处理程序多状态等。【答案】条件语句分为if和 ifelse和 ifelse ifelse等 3 种形式。面试题6 0 条件语句如何嵌套?如何匹配else子句【出现频率】【关键考点】条件语句的嵌套【考题分析】在 C+中,条件语句是支持嵌套的。可以在条件语句的执行语句中再嵌套条件语句。示例代码如下:if(minVal=ivec i)条件语句 1(if(minVal=ivec i)嵌套条件语句 59第2篇C/C+基础知识+o ccu
5、 r s;e l s e(m i n V a l =i v e c i ;o ccu r s =1;这样就在if条件的执行语句中嵌套了条件语句,但如果编程者将代码修改如下:i f (m i n V a l =i v e c i )条件语句 1(i f (m i n V a l =i v e c i )条件语句2,没有嵌套+o ccu r s;)e l s e(m i n V a l =i v e c i ;o ccu r s =1;就会产生二义性问题,由于有两个if语句,下面的else不知道与哪个if进行匹配,这种情况往往称为悬垂else问题,无法判断else语句归属于那个if语句。这样的话会
6、导致程序产生错误。如果编程者将第2 个 if语句用 括起来,就使得else语句与第一个if进行匹配,这样也就完成了 else子句的匹配。同样的编程者也可以在else的字句中嵌套条件语句,一个完整的程序实例代码如下:#in c l u d e v o id m a i n()(in t a=0;in t b=0;in t c=0;c o u t np l e ase in p u t 3 n u m be rs b c;if(ab)(if(ac)(c o u t a is m ax!”;e l se/定义3个整型变量c o u t c is m ax!”;)e l se(if(bc)(c o u
7、 t b is m axn e n d l;e l se(c o u t c is m a x!*;/通过嵌套输出3个变量最大值/在e l s e语句中嵌套,输出3个变量最大值 6 0 第 5 章流程控制)以上代码是通过在if和 else的两个字句中嵌套大小判断条件,得出比较大小的3 个数中的最大值。【答案】条件语句可以在不同的执行语句作用域内进行嵌套,else子句通过 划分作用域来实现匹配。5.2 循 环 语 句在 C/C+程序中,不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。例如依次输出一个数组的每一个成员的值,一组被重复执行的语句被称作循环体,循环体能否继
8、续重复循环操作,要取决于循环的终止条件。如果没有达到循环的终止条件,循环就会一直执行。循环语句是由循环体及循环的终止条件两个部分组成的。面试题61 for循环语句的计算顺序是什么【出现频率】【关键考点】for语句的使用【考题分析】for语句是C+中最常见的循环语句,也是在程序,特别是算法中经常用到的一种语句,编程者所了解的大部分排序算法就是通过for语句来实现的,它的语法形式如下:for(initializer;condition;expression)/循环条件(Statement在 for语句的语法中,initializer是对每次循环过程中都要修改的变量进行初始化,或者赋给一个起始值。而
9、 condition语句是用来控制循环的。当 condition为 true时,循环执行 statement。如果第一次求解condition就得false值,则不执行statement。它就是循环语句的终止条件。expression通常用于修改在initializer中初始化并在condition中检查的变量的值。它在每次循环迭代后都要求解。如果在第一次求解condition就得到false值的话,则不会执行expression语句。一个使用for语句来实现数字排序的示例代码如下:#include#include using namespace std;int main(int argc,c
10、har*argv)(int a 10;61 第 2篇C/C+基础知识int i,j,t;cout 请输入10个需要排序的数字:endl;for(i=0;i10;i+)(cina i;coutendl;for(j=0;j9;j+)(for(i=0;iai+l)(t=ai;ai=ai+l;ai+1=t;)cout”排序的结果是:endl;for(i=0;i10;i+)(couta i ;)coutendl;system(HPAUSE);return EXIT_SUCCESS;/定义基本变量和数组/for循环语句 第 2 个 for循环/准备输出结果/循环输出排序结果以上代码是通过fo r语句实现了
11、一个冒泡排序,通过循环扫描数组,从第一个开始与后面的值进行比较,如果大于的话就两两互换,最终达到10个数字从小到大排列,并且循环扫描数组输出。冒泡排序是数字排序的最基础算法之一,在后面的算法章节中,会更多地介绍循环在排序算法中的重要作用。2 注意:如果循环中需要修改的变量值不需要初始化或者已经初始化了,则可以省略initializer 语句。【答案】for语句的执行顺序是先从左至右执行循环条件语句,如果循环条件语句的判断语句为tru e,则在循环条件语句执行之后继续执行一次循环执行语句,然后再回到循环条件语句。如果循环语句判断条件为false,则停止循环。面试题62 while循环与do-wh
12、ile循环有什么区别【出现频率】【关键考点】while 和 do-while 的使用【考题分析】当条件语句值为true时;while语句就反复循环执行语句。while语句的语法形式如下:while(condition)/condition 为循环条件62第 5 章流程控制Statement)如果条件condition的 值 为 tru e,执行语句statement condition不能为空。当condition求解为false则不再执行退出循环。如果第一次求解condition就产生false值,则不执行 statement odo-while语句则会先执行一次执行语句,不论第一次求解co
13、ndition是否产生false值,do-while语句的语法形式如下:do(statementwhile(condition)/condition 为循环条件一个使用while语句和do-while语句的示例代码如下:#include void main()(int if 3 f suml,sum2;i=1;j =1;suml=0;sum2=0;while(i 101)/循环开始,计算1100的和(suml+=i;i+;)printf(suml=%dnHz suml);输出计算结果do(sum2+=i;i+;)while(i 101);/注意这里的分号不可省,while和 do-while区
14、别之一printf(sum=%dnz sum2);一般来说,用 while语句和do-while语句来处理同一问题时,如果二者的循环体是一样的,执行结果也会是一样。但是如果while的条件语句一开始就为假的话,两者执行的结果就不一样了。A 注 意:通 常,循环条件自身或者在循环体内必须做一些相关操作来更改循环条件表达式的值。否则,循环可能永远不会开始或者结束,不结束的循环就是死循环,它可能会导致程序最终崩溃。【答案】while循环与do-while循环的主要区别在于,如果循环条件语句为false,while语句不会执行循环,而 do-while保证循环体执行一次。63第2篇 C/C+基础知识面
15、试题6 3 典型循环语句【出现频率】【关键考点】几种典型循环语句【考题分析】C/C+的典型循环语句包括for循环语句、while循环语句和do-while循环语句,在前面小节中已经做了相关地介绍示例代码如下:while循环:int*source=arrl;/定义整型数组 arrlsize_t i=sizeof(arrl)/sizeof(*arrl);int*dest=new inti;while(source!=arrl+i)/while 循环(*dest+=*source+;for循环:for(a:size_type ind=0;ind!=svec.size();+ind)(cout sve
16、cind;if(ind+1!=svec.size()cout ”,do-while 循环:string rsp;do/至少会先执行一次(cout please enter two values:;int vail,va!2;cin vail va12;cout The sum of vail fo r或sw itch语句,并将程序的执行顺序传递给紧接在结束语句之后的语句。示例代码如下:v e c to r:ite r a to r i t e r =v e c.b e g in();w hile(ite r !=v ec.en d()(i f (value=*ite r)break;跳出循环)
17、e lse+ite r;/不跳出)i f (ite r !=v ec.end()/跳出以后从这里开始执行(M上面的代码在v ecto r中循环搜索某个特殊值的第一次出现。一旦找到,则通过break退出循环。continue语句可以让最近的循环语句的当次迭代提前结束。对 于w hile和do w hile循环,会继续求解循环条件,如果没有达到循环终止条件则会继续执行循环执行语句。而对于fo r循环,程序则会继续求解fo r语句头中的expression表达式,示例代码如下:s trin g inB uf;w hile(cin inBuf&!inBuf.empty()/循环条件判断i f (inB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C与C+程序员面试宝典 C+ 程序员 面试 宝典 流程 控制
限制150内