c语言程序设计03

c语言程序设计03

ID:33585716

大小:280.35 KB

页数:11页

时间:2019-02-27

c语言程序设计03_第1页
c语言程序设计03_第2页
c语言程序设计03_第3页
c语言程序设计03_第4页
c语言程序设计03_第5页
资源描述:

《c语言程序设计03》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第3章控制流一个语言的控制流语句用于指定各个计算执行的次序。在前面的例子中我们已经见到了一些最常用的控制流结构。本章将全面讨论控制流语句,更精确、更全面地对它们进行介绍。3.1语句与分程序在诸如x=0、i++或printf(...)之类的表达式之后加上一个分号(;),就使它们变成了语句:x=0;i++;printf(⋯⋯);在C语言中,分号是语句终结符,而不是像Pascal等语言那样把分号用做语句之间的分隔符。可以用一对花括号{与}把一组说明和语句括在一起构成一个复合语句(也叫分程序),复合语句在语法上等价于单个语句,即可以用在单个语句可以出现的所有地方。一个明显

2、的例子是在函数说明中用花括号括住的语句,其他的例子有在if、else、while与for之后用花括号括住的多个语句。(在任何分程序中都可以说明变量,第4章将对此进行讨论。)在用于终止分程序的右花括号之后不能有分号。3.2if-else语句if-else语句用于表示判定。其语法形式如下:if(表达式)语句1else语句2其中else部分是任选的。在if语句执行时,首先计算表达式的值,如果其值为真(即,如果表达式的值非0),那么就执行语句;如果其值为假(即,如果表达式的值为0),并且包含else部分,1那么就执行语句。2由于if语句只是测试表达式的数值,故表达式可以采用比

3、较简捷的形式。最明显的例子是用if(表达式)代替if(表达式!=0)有时这样既自然又清楚,但有时又显得比较隐秘。由于if-else语句的else部分是任选的,当在嵌套的if语句序列中缺省某个else部分时会引起歧在表达式后加上分号构成的语句叫做表达式语句。—译者注第3章控制流计计45下载义。这个问题可以通过使每一个else与最近的还无else匹配的if匹配。例如,在如下语句中:if(n>0)if(a>b)z=a;elsez=b;else部分与嵌套在里面的if匹配,正如缩入结构所表示的那样。如果这不是我们所希望的,那么可以用花括号来使该else部分与所希望的if强制结合

4、:if(n>0){if(a>b)z=a;}elsez=b;歧义性在有些情况下特别有害,例如,在如下程序段中:if(n>=0)for(i=0;i0){printf("⋯");returni;}else/*错*/printf("error--nisnegative");其中的缩入结构明确地给出了我们所希望的结果,但编译程序无法得到这一信息,它会使else部分与嵌套在里面的if匹配。这种错误很难发现,因此我们建议在if语句嵌套的情况下尽可能使用花括号。顺便请读者注意,在语句if(a>b)z=a;elsez=b;中,在z=a后有一个分号。这是

5、因为,从语法上讲,跟在if后面的语句总是以一个分号终结,诸如z=a之类的表达式语句也不例外。3.3else-if语句在C程序经常使用如下结构:if(表达式)语句elseif(表达式)语句elseif(表达式)语句46计计C程序设计语言下载elseif(表达式)语句else语句由于这种结构经常要用到,值得单独对之进行简要讨论。这种嵌套的if语句构成的序列是编写多路判定的最一般的方法。各个表达式依次求值,一旦某个表达式为真,那么就执行与之相关的语句,从而终止整个语句序列的执行。每一个语句可以是单个语句,也可以是用花括号括住的一组语句。最后一个else部分用于处理“上述条件

6、均不成立”的情况或缺省情况,此时,上面的各个条件均不满足。有时对缺省情况不需要采取明显的动作,在这种情况下,可以把该结构末尾的else语句省略掉,也可以用它来检查错误,捕获“不可能”的条件。可以通过一个二分查找函数来说明三路判定的用法。这个函数用于判定在数组v中是否有某个特定的值x。数组v的元素必须以升序排列。如果在v中包含x,那么该函数返回x在v中的位置(介于0~n-1之间的一个整数);否则,该函数返回-1。在二分查找时,首先将输入值x与数组v的中间元素进行比较。如果x小于中间元素的值,那么在该数组的前半部查找;否则,在该数组的后半部查找。在这两种情况下,下一步都是

7、将x与所选一半的中间元素进行比较。这一二分过程一直进行下去,直到找到指定的值,或查找范围为空。/*binsearch:在v[0]<=v[1]<=v[2]<=⋯⋯<=v[n-1]中查找x*/intbinsearch(intx,intv[],intn){intlow,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(xv[mid])low=mid+1;else/*找到了匹配的值*/returnmid;}return-1;/*没有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。