资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 5 章 流 程 控 制 流程控制是程序的基本问题。 通过流程控制编程者可以完成业务逻辑, 模块的整合等。 在 C/C+中,程序的基本结构分为顺序、循环、分支等 3 类。在编程的时候,通过判断、 分支和循环来对程序的流程进行控制,很多程序在设计的时候也会做出流程图,以方便开 发者更好地理解程序的流程,更准确地判断采取怎样的控制方式。 5.1 条 件 语 句 C/C+中,表达式的返回值都可以用来判断真假,除非没有任何返回值的 void 型和返 回无法判断真假的结构。当表达式的返回值不等于 0 时,它的判断就是“真”,否则就是 “假”。一个表达式可以包含其他表达式和运算符,并且基于整个表达式的运算结果可以得 到一个真或假的条件值。当一个表达式在程序中被用于检验其真或假的值时,称它为条件 语句。 面试题 59 条件语句有哪几种形式 【出现频率】 【关键考点】 条件语句的概念; 条件语句的几种形式。 【考题分析】 条件语句是根据特定的表达式来判断是否真的有条件来执行另外的一些语句,条件语 句有 3 种形式,if、ifelse 和 ifelse ifelse 形式,其中后两种形式带有条件分支。 最简单的 if 条件语句示例代码如下: if (condition) /condition 为判断条件 Statement 其中 condition 就是判断条件, 它返回一个 bool 值, 如果为 true 就执行 statement 语句, 判断条件必须用()括起来,它可以是一个表达式或者一个初始化声明。例如: if (a + b c) /判断条件用括号括起来 第 5 章 流程控制 59 if (int a = compute_value() /判断条件用括号括起来 if 语句的 else 分支可以将一些条件语句放在一起形成一个执行语句序列。示例代码 如下: if (condition) /条件判断 statement1 else /当 if 条件判断不通过时执行 statement2 如果 condition 为真,则执行 statement1;否则,执行 statement2。 Ifelse ifelse 条件分支代码示例: if (minVal void main() int a=0; int b=0; int c=0; /定义 3 个整型变量 coutabc; if(ab) if(ac) coutc) cout #include using namespace std; int main(int argc, char *argv) int a10; 第 2 篇 C/C+基础知识 62 int i,j,t; /定义基本变量和数组 coutai; coutai+1) t=ai; ai=ai+1; ai+1=t; cout void main() int i,j, sum1,sum2; i = 1; j = 1; sum1 = 0; sum2 = 0; while (i :size_type ind = 0;ind != svec.size(); +ind) cout val1 val2; cout rsp; while (!rsp.empty() /循环条件语句 【答案】 C+典型循环语句包括 for 循环语句、while 循环语句和 do-while 循环语句。其中 for 循环语句更多的用于需要遍历的情况,而 while 和 do-while 循环语句可以用于状态判断并 且根据状态执行操作等。 面试题 64 break 语句与 continue 语句有什么区别 【出现频率】 第 5 章 流程控制 65 【关键考点】 break 和 continue 的使用 【考题分析】 break 语句是用于结束最近的 while、do while、for 或 switch 语句,并将程序的执行顺 序传递给紧接在结束语句之后的语句。示例代码如下: vector:iterator iter = vec.begin(); while (iter != vec.end() if (value = *iter) break; /跳出循环 else +iter; /不跳出 if (iter != vec.end() /跳出以后从这里开始执行 上面的代码在 vector 中循环搜索某个特殊值的第一次出现。一旦找到,则通过 break 退出循环。 continue 语句可以让最近的循环语句的当次迭代提前结束。对于 while 和 do while 循 环,会继续求解循环条件,如果没有达到循环终止条件则会继续执行循环执行语句。而对 于 for 循环,程序则会继续求解 for 语句头中的 expression 表达式,示例代码如下: string inBuf; while (cin inBuf else 上面的循环每次从标准输入中读入一个单词,如果碰到以下划线开头的单词就进行处 理。如果不是,终止当前循环,接着读取下一个单词。 【答案】 continue 语句只能出现在循环语句中, 而 break 语句可以出现在 switch 语句中, continue 语句不会退出循环, 只会终止当次执行循环体并且进入下一次循环体的执行, break 语句会 退出循环语句。 第 2 篇 C/C+基础知识 66 5.3 switch 语句 对于多选择分支的情况,可以用 if 语句的 ifelseif 形式或 if 语句嵌套处理,但大 多数情况下却略显麻烦。为此,C+提供了另一种方法,switch 语句,也称为开关语句。 面试题 65 switch 语句的执行顺序是什么 【出现频率】 【关键考点】 switch 语句的执行顺序 【考题分析】 在使用深层嵌套的 if else 语句时,往往语法是正确的,但在逻辑方面却没有正确地反 映程序员的意图。例如,错误的 else if 匹配很容易被忽略。即使添加新的条件和逻辑关系, 或者对语句做其他修改,都很难保证正确。switch 语句提供了一种更方便的方法来实现深 层嵌套的 if/else 逻辑。 switch 语句的示例代码如下: char ch; int a1 = 0, e1 = 0, i1 = 0, /初始化变量数据 o1 = 0, u1= 0; while (cin ch) switch (ch) /开始分支语句 case a: /case 语句进行匹配 +a1 break; case e: +e1; break; case i: +i1; break; case o: +o1; break; case u: +u1; break; 通过对 switch 后的圆括号内表达式的值, 与其后的花括号中用 case 列出的关键字做比 较,实现 switch 语句的分支功能。圆括号内的表达式必须产生一个整数结果,其值与每个 case 的值进行比较。关键字 case 和它所关联的值称为 case 标号。每个 case 标号的值都必 须是一个常量表达式,当 case 标号的值和 switch 后圆括号的产生的结果对应时,则执行相 应的 case 后的操作。 第 5 章 流程控制 67 另外,在 switch 语句中,还有一个 default 语句,表示如果圆括号内表达式的值与 case 后的关键字都没有匹配的情况下,可以设定一个默认执行的语句。示例代码如下: #include “stdio.h“ main() int year ,month,days,flat; printf(“请输入月份“n“); scanf(“%d%d“, flag=1; switch(month) /判断月份的值 case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4: case 6: case 9: case 11:day=30;break; case 2: if(!(year % 4) else days=28; break; default: flag=0; /如果输入的月份不在 112 的范围之内 if (flag) printf(“天数=%dn“,days); else printf(“不存在的月份 n“); 以上代码实现的是输入一个年月,然后输出该月有多少天数。如果是闰年的话,则 2 月份有 29 天。 【答案】 如果表达式与其中一个 case 标号的值匹配, 则程序将从该标号后面的第一个语句开始 依次执行各个语句,直到 switch 结束或遇到 break 语句为止。如果没有发现匹配的 case 标 号,则在存在 default 语句时执行 default 语句,否则程序从 switch 语句后面的第一条语句 继续执行。 面试题 66 如何在 switch 语句内部定义变量 【出现频率】 【关键考点】 在 switch 语句内部定义变量 第 2 篇 C/C+基础知识 68 【考题分析】 在 C+中,对于 switch 结构,能而且只能在它的最后一个 case 标号或 default 标号后 面定义变量。示例代码如下: case true: string file_name = get_file_name(); break; default: 这个规则的制定是为了避免出现代码跳过变量的定义和初始化的情况。另外也可以引 入块语句,并且在该块语句中来定义变量,从而保证变量在使用前可以被定义和初始化。 示例代码如下: case true: string file_name = get_file_name(); break; case false: 【答案】 在 switch 结构中可以在最后一个 case 标号或 default 标号后面定义变量,或者引入块 语句来定义变量。 5.4 递 归 递归是一项非常重要的编程技术,它让函数可以从函数体内部调用自身。递归通常把 一个大型复杂的问题层层简化为一个,与原问题相似的规模较小的问题来求解,使用递归 策略只需少量的程序就可描述出解题过程所需要的多次重复计算,这样就大大地减少了程 序的代码量。递归的能力在于能运用有限的语句来定义对象的无限集合。 面试题 67 什么是递归 【出现频率】 【关键考点】 递归的概念 【考题分析】 递归作为一种算法在程序设计语言中广泛应用,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号