版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1C语言程序设计41第1页/共25页§4.1概述C语言是面向过程的模块化语言。所谓模块化,就是把一个较大的程序分解成若干个小模块,每个模块用来实现一个特定的功能,使程序的结构清晰,便于程序人员分工。在程序设计中,常将一些常用的功能模块编写成函数,放在公共函数库中供大家随时调用。善于利用函数,以减少重复编写程序段的工作量。第2页/共25页[例4.1]函数调用的简单例子#include<stdio.h>voidprintstar(){printf(“**********\n”);}voidprint_message(){printf(“Howdoyoudo!\n”);}voidmain(){printstar();print_message();printstar();}第3页/共25页使用函数的优点: (1)使程序变得更简短而清晰;
(2)提高了代码的重用性;
(有利于程序维护;
(4)可以提高程序开发的效率。第4页/共25页说明: (1)一个源程序文件由一个或多个函数以及其他有关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,即以源文件为单位进行编译,而不是以函数为单位进行编译。
(2)一个C程序由一个或多个源程序文件组成。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们放在若干个源程序中,再由若干个源程序文件组成。一个源程序文件可以为多个C程序共用。 第5页/共25页(3)一个C程序有且只能有一个名为main()的主函数,程序的的执行是从main函数开始的。如果在main函数中有调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。(4)所有函数都是平行的,即在定义函数时是分别进行的,是相互独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以相互调用,但不能调用main函数。main函数是系统调用的。第6页/共25页(5)从用户使用的角度看,函数有两种。①标准函数。即库函数,由系统提供,可直接使用。②用户自己定义的函数。用以解决用户专门需要。(6)从函数的形式看,函数分两类。①无参函数。在调用函数时,主调函数不向被调用函数传递数据。②有参函数。在调用函数时,主调函数通过参数向被调用函数传递数据。(7)函数可分为有返回值函数和无返回值函数。①有返回值函数。执行后向主调函数返回一个执行结果。②无返回值函数。执行后不向主调函数返回函数值。第7页/共25页§4.2函数的定义与调用 1.定义无参函数的一般形式为: 类型标识符函数名() {
声明部分 语句部分
}
在定义函数时要用“类型标识符”指定函数值的类型,即函数返回值的类型。函数名是用户定义的标识符,后面的括号不能缺少。4.2.1函数的定义例如:voidprintstar(){printf(“**********\n”);}函数头函数体对于无返回值的函数,应将函数类型定义为”void”,即空类型。这样,系统就保证不使函数带回任何值,即禁止调用函数中使用被调用函数的返回值。此时在函数体中不得出现return语句。第8页/共25页2.定义有参函数的一般形式为:类型标识符函数名(形参表列){
声明部分 语句部分}形参是变量,必须在形参表中给出形参的类型说明。例如:intmax(intx,inty){ intz; z=x>y?x:y; return(z);}§4.2函数的定义与调用4.2.1函数的定义第9页/共25页3.空函数的一般形式为:类型说明符函数名() { }§4.2函数的定义与调用4.2.1函数的定义如果函数定义中省略了返回类型,则缺省为int。第10页/共25页1.函数的调用:§4.2函数的定义与调用4.2.2函数的调用、参数及传递方式
函数调用的一般形式为 函数名(实参表列);
说明:(1)实参与形参个数相等,类型一致,按顺序一一对应。实参表求值顺序,因系统而定。(VC++自右向左)(2)如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。(3)如果实参表列包含多个实参,则各参数间用逗号隔开。第11页/共25页#include<stdio.h>voidmain(){ intf(inta,intb); inti=2,p; p=f(i,++i); printf(“%d\n”,p);}intf(inta,intb){ intc; if(a>b)c=1; elseif(a==b)c=0; elsec=-1; returnc;}[例4.4]实参求值的顺序练习:教材p130,二,2第12页/共25页2.函数的参数:§4.2函数的定义与调用4.2.2函数的调用、参数及传递方式形式参数:定义函数时函数名后面括号中的变量名表。实际参数:调用函数时函数名后面括号中的变量名表或对应的表达式表。第13页/共25页#include<stdio.h>main(){inta=4,b=5,c=2,max;if(a>b){if(a>c)max=a;elsemax=c;}else{if(b>c)max=b;elsemax=c;}printf(“%d”,max2);}[例4.2]求a,b,c3个数中的最大者。#include<stdio.h>main(){inta=4,b=5,c=2intmax1,max2;max1=max(a,b);max2=max(max1,c);printf(“%d”,max2);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}第14页/共25页3.函数参数的传递方式:§4.2函数的定义与调用4.2.2函数的调用、参数及传递方式例交换两个数#include<stdio.h>main(){intx=7,y=11;swap(x,y);printf("x=%d,y=%d\n",x,y);}swap(inta,intb){inttemp;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);}第15页/共25页关于形参与实参的说明: (1)在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,形参才被分配内存单元。调用结束时内存释放。
(2)实参可以是常量、变量或表达式。但要求它们有确定的值。在调用时将实参的值赋给形参。
(3)在被定义的函数中,必须指定形参的类型。
第16页/共25页关于形参与实参的说明:
(4)实参与形参的类型应相同或赋值兼容。
(5)实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束,形参释放,实参仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数的实参的值。第17页/共25页返回语句形式:
return(表达式)
或return表达式或return;功能:使程序控制从被调函数返回到主调函数中,同时把返回值带给主调函数。说明:1.函数至多可以返回一个值,不能返回多个值;2.返回值的数据类型必须与函数中返回值的数据类型匹配。如果类型不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。3.当遇到return语句时,函数执行将终止。程序控制流程将立即返回调用函数。
§4.2函数的定义与调用4.2.3函数的返回值第18页/共25页[例4.3]返回值类型与函数类型不同#include<stdio.h>voidmain(){ intmax(flaotx,floaty); floata,b; intc; scanf(“%f,%f”,&a,&b); c=max(a,b); printf(“Maxis%d\n”,c);}max(floatx,floaty){ floatz; z=x>y?x:y; returnz;}第19页/共25页§4.2函数的定义与调用4.2.4函数声明的作用函数声明的一般形式:
函数类型函数名(形参类型[形参名],…);或函数类型函数名()
函数声明的作用:告诉编译系统函数类型、参数个数及类型,以便检验。注意:函数定义与函数声明的区别!
第20页/共25页§4.2函数的定义与调用4.2.4函数声明的作用在一个函数中调用另一个函数需要具备的条件:
(1)必须是已经存在的函数(库函数或用户自己定义的函数)。
(2)如果使用库函数,应在本文件开头用#include命令将调用有关库函数时所需用到的信息“包含”到本文件中去。
(3)如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面(在同一个文件中),应该在主调函数中对被调用的函数作声明。第21页/共25页说明: (1)如果被调用函数的定义出现在主调函数之前,可以不必加以声明。
(2)如果已在文件的开头(在所有函数之前),已对本文件中所调用的函数进行了声明,则在各函数中不必对其所调用的函数再作声明。§4.2函数的定义与调用4.2.4函数声明的作用第22页/共25页[例4.5]对被调用的函数作声明#include<stdio.h>floatadd(floatx,floaty){ floatz; z=x+y; returnz;}voidmain(){ floata,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sumis%f\n”,c);}#include<stdio.h>voidmain(){ floata,b,c; scanf(“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锦城房产公司管理制度(3篇)
- 梨状肌综合征临床诊疗与生活方式干预
- 注册会计师审计中非无保留意见审计报告的出具条件
- 食品饮料厂卫生标准细则
- 某玻璃厂安全生产操作流程
- 2026云南楚雄州永仁县发展和改革局政府购买服务人员招聘5人备考题库及答案详解【有一套】
- 2026黎明职业大学招聘编制内博士研究生学历学位教师24人备考题库(福建)及一套完整答案详解
- 某汽车厂汽车涂装工艺准则
- 2026合肥信息工程监理咨询有限公司招聘15人备考题库含答案详解(完整版)
- 2026四川省内江市农业科学院考核招聘事业单位6人备考题库及答案详解(历年真题)
- 2026四川宜宾汇发产业新空间投资有限公司第一批员工招聘5人备考题库及答案详解(各地真题)
- 2026广东佛山市公安局三水分局警务辅助人员招聘49人(第一批)考试参考试题及答案解析
- 2026年江苏省南京第五高级中学高考地理一模试卷
- 2026年人教版八年级语文下册第四单元 阅读综合实践 大单元作业设计 教学课件
- 2026年春季统编版新教材八年级下册道德与法治教学计划
- 2026年从事基础研究人员长周期管理 节点奖励:科技人员激励双机制
- 2026年4月全国自考试题及答案《国民经济统计概论》
- 城市运行管理服务平台 管理监督指标及评价标准
- AQ3062-2025精细化工企业安全管理规范解读
- 2024版2026春新人教版数学二年级下册教学课件:第三单元 万以内数的认识(9课时合并)
- 2026年时事政治测试题库100道附答案【满分必刷】
评论
0/150
提交评论