C语言第五章-函数_第1页
C语言第五章-函数_第2页
C语言第五章-函数_第3页
C语言第五章-函数_第4页
C语言第五章-函数_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

章函数本章要点:函数的定义函数的调用函数的参数传递求和问题题目要求:分别求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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论