![C语言第五章-函数_第1页](http://file4.renrendoc.com/view12/M05/3A/2B/wKhkGWXxFJ6ABHuWAAB5g1hjP2s109.jpg)
![C语言第五章-函数_第2页](http://file4.renrendoc.com/view12/M05/3A/2B/wKhkGWXxFJ6ABHuWAAB5g1hjP2s1092.jpg)
![C语言第五章-函数_第3页](http://file4.renrendoc.com/view12/M05/3A/2B/wKhkGWXxFJ6ABHuWAAB5g1hjP2s1093.jpg)
![C语言第五章-函数_第4页](http://file4.renrendoc.com/view12/M05/3A/2B/wKhkGWXxFJ6ABHuWAAB5g1hjP2s1094.jpg)
![C语言第五章-函数_第5页](http://file4.renrendoc.com/view12/M05/3A/2B/wKhkGWXxFJ6ABHuWAAB5g1hjP2s1095.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第
五
章函数本章要点:函数的定义函数的调用函数的参数传递求和问题题目要求:分别求1到10,20到30,35到45的和#include<stdio.h>intmain(){ intsum,i; sum=0; for(i=1;i<=10;i++)
{ sum+=i; } printf("1到10的和是%d\n",sum); sum=0; for(i=20;i<=30;i++)
{ sum+=i; } printf("20到30的和是%d\n",sum); sum=0; for(i=35;i<=45;i++)
{ sum+=i; } printf("35到45的和是%d\n",sum);
return0;}“代码复制”是程序质量不良的表现求累加和函数求两个整数之间数值累加和的程序#include<stdio.h>intmain(){intsum,i,a,b;printf("输入两个数a,b(a<b)\n");scanf("%d%d",&a,&b);sum=0;for(i=a;i<=b;i++){ sum+=i;}printf("%d到%d的和是%d\n",a,b,sum);
return0;}函数实现#include<stdio.h>intsum(inta,intb){intsum,i;for(sum=0,i=a;i<=b;i++){
sum+=i;}returnsum;}intmain(){intisum,a,b;printf("请输入a,b:\n");scanf("%d%d",&a,&b);isum=sum(a,b);printf("%d到%d的和是%d\n",a,b,isum);
return0;}函数是什么函数是一段程序,接收零个或多个参数,实现一个功能,并返回零个或一个值。intsum(inta,intb){intsum,i;for(sum=0,i=a;i<=b;i++){ sum+=i;}returnsum;}求和问题的函数实现题目要求:分别求1到10,20到30,35到45的和#include<stdio.h>intsum(inta,intb){ intsum,i;sum=0;for(i=a;i<=b;i++){sum+=i;}returnsum;}
intmain(){
intisum;isum=sum(1,10);printf("1到10的和是%d\n",isum);isum=sum(20,30);printf("20到30的和是%d\n",isum);isum=sum(35,45);printf("35到45的和是%d\n",isum);
return0;}1.模块化程序设计函数是构成C语言程序的根本模块,模块化编程的最小单位C程序的逻辑结构*一个C程序由一个或多个源程序文件组成*一个源程序文件由一个或多个函数组成*可把每个函数看作一个模块〔Module〕C是模块化程序设计语言2.函数的定义函数分类从用户角度标准函数〔库函数〕:由系统提供用户自定义函数从函数形式无参函数有参函数使用库函数应注意:1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件函数定义一般格式合法标识符函数体函数类型函数名(形参类型说明表){
说明部分 语句部分}函数返回值类型缺省int型无返回值void函数首部maxmaxmaxmaxmax
函数的返回语句形式:return(表达式);或return表达式;功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数说明:函数中可有多个return语句假设无return语句,遇}时,自动返回调用函数假设函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换void型函数例函数返回值类型转换intmain(){floata,b;intc;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);
return0;}max(floatx,floaty){floatz;z=x>y?x:y;
return(z);}运行情况如下:1.5,2.5Maxis23.函数的调用调用形式
函数名(实参表);()起到了表示函数调用的重要作用即使没有参数也需要()如果有参数,那么需要给出正确的数量和顺序这些值会被按照顺序依次用来初始化函数中的参数intsum(inta,intb){intsum,i;sum=0;for(i=a;i<=b;i++){sum+=i;}returnsum;}
isum=sum(20,30);调用方式函数无返回值时,单独作为一个函数调用语句:例printstar();printf(“Hello,World!\n”);函数有返回值时,可放到一个赋值表达式语句中:例m=max(a,b)*2;还可放到一个函数调用语句中,作为另一个函数的参数:例printf(“%d”,max(a,b));m=max(a,max(b,c));对被调用函数要求:必须是已存在的函数库函数:#include<*.h>用户自定义函数:函数类型声明〔函数原型〕在一个函数中调用另一个函数,需要具备哪些条件呢??4.函数原型〔声明〕函数首部,以分号“;”结尾,构成了函数的原型函数原型的目的是告诉编译器这个函数长什么样名称参数〔数量及类型〕返回类型旧标准习惯把函数原型写在调用它的函数里面现在一般写在调用它的函数前面原型里可以不写参数的名字,但是一般仍然写上#include<stdio.h>floatadd(floatx,floaty);intmain(){floata,b,c;scanf("%f,%f",&a,&b);
c=add(a,b);printf("sumis%f",c);
return0;}floatadd(floatx,floaty){floatz;
z=x+y;return(z);}函数原型实际的函数首部根据原型检验函数的定义出现在函数调用之前时可以不用给出函数原型,但良好的编程习惯是在程序开头给出所有的函数原型。5.参数传递形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式c=max(a,b);
(main函数)
(max函数)intmax(intx,inty){
returnx>y?x:y;}例比较两个数并输出大者#include<stdio.h>intmax(intx,inty);int
main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);
return0;}intmax(intx,inty){
returnx>y?x:y;}形参实参例交换两个数#include<stdio.h>voidswap(intx,inty);intmain(){inta=7,b=11;printf("a=%d,\tb=%d\n",a,b);printf("swapped:\n");
swap(a,b);printf("a=%d,\tb=%d\n",a,b);return0;}voidswap(intx,inty){inttemp;
temp=x;x=y;y=temp;}711a:b:调用前:调用结束:711a:b:调用:711x:y:711a:b:swap:711a:b:117x:y:temp例5-1判断质数的函数#include<stdio.h>intmain(){inti,m;printf("inputm:\n");scanf("%d",&m);for(i=2;i<=m-1;i++){
if(m%i==0)break;}
if(i==m){printf("%d是质数",m);}else{ printf("%d不是质数",m);}
return0;}#include<stdio.h>intisprime(intx);intmain(){inti,m;printf("inputm:\n");scanf("%d",&m);if(isprime(m)){printf("%d是质数",m);}else
{printf("%d不是质数",m);}return0;}intisprime(intx){inti;for(i=2;i<=x-1;i++){if(x%i==0)
return0;}return1;}例5-2阶乘的累加和问题求∑n!=1!+2!+3!…+n!#include<stdio.h>intmain(){inti,j,n;floats,p;printf("请输入n=");scanf("%d",&n);s=0;for(i=1;i<=n;i++){
p=1;for(j=1;j<=i;j++)
p=p*j;
s=s+p;}printf("Sum=%.0f\n",s);return0;}#include<stdio.h>floatfun(intn);intmain(){inti,n;floats;scanf("%d",&n);s=0;for(i=1;i<=n;i++){s=s+fun(i);
}
printf("Sum=%.0f\n",s);return0;}floatfun(intn){ inti; floatp=1; for(i=1;i<=n;i++)
{p=p*i; } returnp;}*************************输出由星号构成的一个n行的等腰三角形*********
*******#include<stdio.h>voidprintstar(intn);intmain(){i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 花店员工入职协议书范本
- 四川乐山市犍为县市级名校2021-2022学年中考五模数学试题含解析
- 陕西省西安交通大附中重点达标名校2021-2022学年中考适应性考试数学试题含解析
- 山东省无棣县鲁北高新技术开发区实验学校2022年十校联考最后数学试题含解析
- 山东省聊城莘县联考2021-2022学年中考数学模拟试题含解析
- 山东省肥城市重点中学2022年中考数学适应性模拟试题含解析
- 广东省惠州市惠阳区(2024年-2025年小学一年级语文)部编版课后作业(复习)试卷(含答案)
- 云南省临沧市临翔区(2024年-2025年小学一年级语文)部编版课后作业(知识梳理)试卷(含答案)
- 工程地质全册配套完整课件2
- 三方校企合作协议书范本
- 养成良好习惯
- 提土旁、斜玉旁的写法(教学设计)2022-2023学年书法四年级 全国通用
- 频谱仪N9020A常用功能使用指南
- 中国联通高通量数据网架构及关键技术白皮书 2023
- 【高中语文大单元教学设计研究国内外文献综述6800字】
- 食管癌护理课件
- 《导游业务》电子教案
- 初中生物-第三节 安全用药教学课件设计
- 读书分享(《给教师的建议》)教学课件
- 吴冬冬:长方体和正方体的认识PPT
- 构件深化设计-2预制构件加工图设计(装配式建筑深化设计与施工)
评论
0/150
提交评论