c语言高级教程第四章

c语言高级教程第四章

ID:46940603

大小:375.81 KB

页数:29页

时间:2019-11-30

c语言高级教程第四章_第1页
c语言高级教程第四章_第2页
c语言高级教程第四章_第3页
c语言高级教程第四章_第4页
c语言高级教程第四章_第5页
资源描述:

《c语言高级教程第四章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、李堂秋厦门大学计算机科学编写C与C++程序设计第四章函数和程序结构前言使用函数,可以把大的计算任务分解,换句话说,可以使用许多函数的组合来完成复杂的任务。而且在C中,并非所有的函数都要自己定义,可以使用别人已做好的程序模块。在设计主函数的时候,可以将不必要的细节蕴藏起来,以便更容易把握主线和全局。如果程序太大,还可以将C语言写的程序分放多个文件,分别编译,最后再联接起来成为整体。4.1函数的基础看看我们如何编一个程序,首先要明确我们要做什么事请,比如要读一个文件,找出所有包含某一字符串的行并把它打印出来。 思路:while(读入一个新行

2、)if(如果这个新行包含指定的字符串)打印这个新行读入一个新行打印这一行判断这一行是否指定的字符串函数的基础(续)<返回值的类型><函数名>(<变量定义表>) { <定义与说明> <可执行语句> }除了<函数名>和()、{}其他都可以省略,如:dummy(){};数据传入数据通过return<表达式>;传回给调用函数#include #defineMAXLINE1000intgetline(charline[],intmax);intstrindex(charsource[],charsearchfor[]);char

3、pattern[]=“ould”;/*patterntosearchfor*//*findalllinesmatchingpattern*/ main() { charline[MAXLINE];intfound=0; while(getline(line,MAXLINE)>0) if(strindex(line,pattern)>=0){printf(“%s”,line); found++; } returnfound; }主函数/*getline:getlineintos,returnlength*/intgetline(char

4、s[],intlim) {intc,i; i=0; while(--lim>0&&(c=getchar())!=EOF&&c!=‘’) s[i++]=c; if(c==‘’) s[i++]=c; s[i]=‘’; returni; } /*strindex:returnindexoftins,-1ifnone*/intstrindex(chars[],chart[]) {inti,j,k; for(i=0;s[i]!=‘’;i++){ for(j=i,k=0;t[k]!=‘’&&s[j]==t[k];j++,k++)

5、; if(k>0&&t[k]==‘’) returni; } return-1; }子函数4.2返回非整数的函数在使用返回值不是整数的函数时,正确地进行函数的定义和函数说明十分重要。函数定义时一定要说明返回值类型,否则缺省为整数。为了使调用函数知道被调用函数的类型,函数调用前一定要进行原形说明,否则,如果函数定义的类型与调用类型出现不一致:如果调用和被调用函数在同一个文件中定义,编译器会提出警告,这是实行原型说明的好处。如果不在一个文件中定义,编译器不会发现问题,即:在调用前没有原型说明的函数,被理解为返回整数,而对它的变元毫无假定

6、。函数原型说明中没有给出变量说明的,编译器对变元不做任何检查。子函数-把字符串转换成浮点数#include /*atof:convertstringstodouble*/doubleatof(chars[]) { doubleval,power;inti,sign; for(i=0;isspace(s[i]);i++)/*skipleadingspaces*/ ; sign=(s[i]==‘-’)?-1:1; if(s[i]==‘+’

7、

8、s[i]==‘-’) i++; for(val=0.0;isdigit(s[i])

9、;i++)val=10*val+(s[i]-‘0’); if(s[i]=‘.’){ i++; for(power=1.0;isdigit(s[i]);i++){val=10*val+(s[i]-‘0’); power*=10.0; } }returnsign*val/power; }主函数-读入数字并把它们累加起来#include #defineMAXLINE100 /*arudimentarycalculator*/ main() {doublesum,atof(char[]);charline[MAXLINE];

10、intgetline(charline[],intmax);sum=0; while(getline(line,MAXLINE)>0)printf(“t%g”,sum+=atof(line)); re

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

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

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