04 第四章 函数与程序结构 c语言程序设计 第二版

04 第四章 函数与程序结构 c语言程序设计 第二版

ID:34444518

大小:1.43 MB

页数:21页

时间:2019-03-06

04 第四章 函数与程序结构 c语言程序设计 第二版_第1页
04 第四章 函数与程序结构 c语言程序设计 第二版_第2页
04 第四章 函数与程序结构 c语言程序设计 第二版_第3页
04 第四章 函数与程序结构 c语言程序设计 第二版_第4页
04 第四章 函数与程序结构 c语言程序设计 第二版_第5页
资源描述:

《04 第四章 函数与程序结构 c语言程序设计 第二版》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计第四章函数与程序结构第4章函数与程序结构函数可以把大的计算任务分解成若干个较小的任务,程序设计人员可以基于函数进一步构造程序,而不需要重新编写一些代码。一个设计得当的函数可以把程序中不需要了解的具体操作细节隐藏起来,从而使整个程序结构更加清晰,并降低修改程序的难度。C语言在设计中考虑了函数的高效性与易用性这两个因素。C语言程序一般都由许多小的函数组成,而不是由少量较大的函数组成。一个程序可以保存在一个或者多个源文件中。各个文件可以单独编译,并可以与库中已编译过的函数一起加载。我们在

2、这里不打算详细讨论这一过程,因为编译与加载的具体实现细节在各个编译系统中并不相同。ANSI标准对C语言所做的最明显的修改是函数声明与函数定义这两方面。第1章中我们曾经讲过,目前C语言已经允许在声明函数时声明参数的类型。为了使函数的声明与定义相适应,ANSI标准对函数定义的语法也做了修改。基于该原因,编译器就有可能检测出比以前的C语言版本更多的错误。并且,如果参数声明得当,程序可以自动地进行适当的强制类型转换。ANSI标准进一步明确了名字的作用域规则,特别要求每个外部对象只能有一个定义。初始化的适

3、用范围也更加广泛了,自动数组与结构都可以进行初始化。C语言预处理的功能也得到了增强。新的预处理器包含一组更完整的条件编译指令(一种通过宏参数创建带引号的字符串的方法),对宏扩展过程的控制更严格。4.1.函数的基本知识首先我们来设计并编写一个程序,它将输入中包含特定“模式”或字符串的各行打印出来(这是UNIX程序grep的特例)例如,在下列一组文本行中查找包含字符串“ould”的行:AhLove!couldyouandIwithFateconspireTograspthissorrySchemeo

4、fThingsentire,Wouldnotweshatterittobits--andthenRe-moulditnearertotheHeart'sDesire!程序执行后输出下列结果:AhLove!couldyouandIwithFateconspireWouldnotweshatterittobits--andthenRe-moulditnearertotheHeart'sDesire!该任务可以明确地划分成下列3部分:whiel(还有未处理的行)if(该行包含指定的模式)打印该行尽管我

5、们可以把所有的代码都放在主程序main中,但更好的做法是,利用其结构把每一部分设计成一个独立的函数。分别处理3个小的部分比处理一个大的整体更容易,因为这样By阴风共275页第54页C语言程序设计第四章函数与程序结构可以把不相关的细节隐藏在函数中,从而减少了不必要的相互影响的机会,并且,这些函数也可以在其它程序中使用。我们用函数getline实现“还有未处理的行”,该函数已在第1章中介绍过;用printf函数实现“打印该行”,这个函数是现成的,别人已经提供了。也就是说,我们只需要编写一个判定“该行

6、包含指定的模式”的函数。我们编写函数strindex(s,t)实现该目标。该函数返回字符串t在字符串s中出现的起始位置或索引。当s不包含t时,返回值为-1。由于C语言数组的下标从0开始,下标的值只可能为0或正数,因此可以用像-1这样的负数表示失败的情况。如果以后需要进行更复杂的模式匹配,只需替换strindex函数即可,程序的其余部分可保持不变。(标准库中提供的库函数strstr的功能类似于strindex函数,但该库函数返回的是指针而不是下标值。)完成这样的设计后,编写整个程序的细节就直截了当

7、了。下面列出的就是一个完整的程序,读者可以查看各部分是怎样组合在一起的。我们现在查找的模式是字符串字面值,它不是一种最通用的机制。我们在这里只简单讨论字符数组的初始化方法,第5章将介绍如何在程序运行时将模式作为参数传递给函数。其中,getline函数较前面的版本也稍有不同,读者可将它与第1章中的版本进行比较,或许会得到一些启发。#include#defineMAXLINE1000/*maximuminputlinelength*/intgetline(charline[],in

8、tmax)intstrindex(charsource[],charsearchfor[]);charpattern[]="ould";/*patterntosearchfor*//*findalllinesmatchingpattern*/main(){charline[MAXLINE];intfound=0;while(getline(line,MAXLINE)>0)if(strindex(line,pattern)>=0){printf("%s",line);found++;}return

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

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

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