C语言第十次课_第1页
C语言第十次课_第2页
C语言第十次课_第3页
C语言第十次课_第4页
C语言第十次课_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1请将您的手机铃声设置为震动2作业课本:

习题7.2

(第116页)

习题7.3

(第116页)

习题7.7

(第118页)

3复习回顾字符数组的定义字符数组的初始化字符串的输入输出常用字符串处理函数4常用字符串处理函数字符串输入函数gets

格式:gets(字符数组名)字符串输出函数puts

格式:puts(字符数组名)5字符串连接函数strcat

格式:strcat(字符数组1,字符数组2)常用字符串处理函数字符串拷贝函数strcpy

格式:strcpy(字符数组1,字符串2)6字符串比较函数strcmp

格式:strcmp(字符串1,字符串2)常用字符串处理函数字符串长度函数strlen

格式:strlen(字符数组)7str[0]str[1]str[2]课堂练习编写程序,分别计算三个字符串的长度并求出其中的最大串。HEL\0WELL\0WE\08#include<string.h>main(){charstring[20],str[3][20];inti;for(i=0;i<3;i++)gets(str[i]);

printf("%s\n",string);}例

编写程序,求出三个字符串中最大者if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);9例子#include"stdio.h"voidmain(){floata,b,c,d,m,n,p,q,r,s;scanf("%f,%f,%f,%f",&a,&b,&c,&d);

printf("%f,%f,%f,%f,%f,%f",m,n,p,q,r,s);}m=(a*a+b*b)/a-(a*a-b*b)/b;n=(a*a+c*c)/a-(a*a-c*c)/c;p=(a*a+d*d)/a-(a*a-d*d)/d;q=(b*b+c*c)/b-(b*b-c*c)/c;r=(b*b+d*d)/b-(b*b-d*d)/d;s=(c*c+d*d)/c-(c*c-d*d)/d;0000010例改进程序voidmain(){floata,b,c,d;scanf("%f,%f,%f,%f",&a,&b,&c,&d);}#include"stdio.h"voidcal(floatx,floaty){floatz;

z=(x*x+y*y)/x-(x*x-y*y)/y;printf("%f\n",z);}cal(a,b);cal(a,c);cal(a,d);cal(b,c);cal(b,d);cal(c,d);0000011函数的概念函数的定义函数的调用函数的嵌套函数函数的调用12函数的概念模块化程序设计13函数的概念模块化程序设计函数式程序结构C语言程序是一个函数式的程序结构,其全部功能都是由函数实现的,每个函数完成特定的独立的功能,通过函数之间的调用实现程序的总体功能。14函数的概念模块化程序设计函数式程序结构sum(floatx,floaty){floatz;z=x+y;return(z);}sub(floatx,floaty){floatz;z=x-y;return(z);}#include"stdio.h"voidmain(){floata,b,c,d;scanf("%f,%f",&a,&b);c=sum(a,b);d=sub(a,b);printf("%f,%f\n",c,d);}15函数的概念模块化程序设计函数式程序结构三种类型的函数从用户角度来看,C函数可分为主函数、库函数、用户自定义函数主函数库函数用户自定义函数16函数的概念模块化程序设计函数式程序结构三种类型的函数函数的执行顺序程序的执行由主函数开始,然后调用其它函数,最终返回主函数结束主函数开始主函数结束17voidmain(){

……f1();……}voidf1(){……}①②③④⑤函数的概念18模块化程序设计函数式程序结构三种类型的函数函数的执行顺序函数的概念函数式结构优点程序层次清晰、易于检查错误便于分工编写、节省程序代码19函数的定义函数类型函数名([形参类型说明表]){

说明部分语句部分}合法标识符函数体函数返回值类型,缺省int型,无返回值void型20函数的定义例有参函数(新式风格)

intmax(intx,inty){intz;z=x>y?x:y;return(z);}max(intx,inty)函数类型函数名([形参类型说明表]){

说明部分语句部分}21例无参无返回值函数

voidprintstar(){printf("**********\n");}函数的定义函数类型函数名([形参类型说明表]){

说明部分语句部分}22函数的定义例

有参函数(旧式风格)

intmax(x,y)

intx,inty;{intz;z=x>y?x:y;return(z);}函数类型函数名(形式参数列表)形参类型说明{

说明部分语句部分}23#include"stdio.h"max(intx,inty){intz;z=x>y?x:y;return(z);}例

比较两数并输出较大数m=max(3,5);max(intx,inty){intz;z=x>y?x:y;return(z);}55voidmain(){inta,b,m;scanf("%d,%d",&a,&b);m=max(a,b);printf("maxis%d\n",m);}24函数的定义返值形式:return(表达式);

return表达式;

return;返值功能:使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数25返值说明:函数的定义函数体中可以有多个return语句max(intx,inty){

if(x>y)

returnx;else

returny;}26若无return语句,遇}时自动返回

返值说明:函数的定义函数体中可以有多个return语句#include"stdio.h"voidprintstar(){printf("**********\n");}voidmain(){printstar();printf("hello!\n");}27函数的定义若无return语句,遇}时自动返回

返值说明:函数体中可以有多个return语句若函数类型与return语句中返回#include"stdio.h"intsum(floata,floatb){returna+b;}voidmain(){floatx=3.5,y=5.2;printf("%d\n",sum(x,y));}值类型不一致,以函数类型为准28调用形式:函数名([实在参数列表]);函数的调用函数语句:printstar();函数表达式:m=max(a,b)*2;函数参数:m=max(a,max(b,c));调用方式:29实参必须有确定值,形参必须指定类型实参的个数与形参的个数必须相等调用说明:函数的调用#include"stdio.h"max(intx,inty){return(x>y?x:y);}voidmain(){inta,b,c,d;scanf("%f,%f,%f",&a,&b,&c);printf("%d",max(a,b,c));}'max':functiondoesnottake3parameters30实参必须有确定值,形参必须指定类型实参的个数与形参的个数必须相等调用说明:函数的调用若形参与实参类型不同,按形参类型转换31实参形参类型不一致示例#include"stdio.h"max(floatx,floaty){floatz;z=x>y?x:y;return(z);}voidmain(){inta,b,c;

a=3,b=5;

c=max(a,b);printf("Maxis%d",c);}形参实参32实参必须有确定值,形参必须指定类型实参的个数与形参的个数必须相等若形参与实参类型不同,按形参类型转换调用说明:函数的调用无实参函数的一对圆括号不能省略33函数的调用#include"stdio.h"voidoutput(){charc;while((c=getchar())!='\n')putchar(c);}voidmain(){output;}程序不会报错,但得不到需要结果34实参必须有确定值,形参必须指定类型实参的个数与形参的个数必须相等若形参与实参类型不同,按形参类型转换无实参函数的一对圆括号不能省略调用说明:函数的调用35标准库函数说明:

#include<*.h>函数的调用说明#include"time.h"#include"stdio.h"#include"stdlib.h"voidmain(){

intx,y,answer;

srand((unsigned)time(NULL));

x=rand()%100+1;

y=rand()%100+1;printf("%d+%d=?",x,y);scanf("%d",&answer);printf(x+y==answer?"Y":"N");}36形式:函数类型函数名(形参类型说明表);

作用:编译系统检验函数类型、参数个数及类型是否符合要求自定义函数说明标准库函数说明:

#include<*.h>函数的调用说明37#include"stdio.h"voidmain(){floatadd(floatx,floaty);

floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}floatadd(floatx,floaty){floatz;z=x+y;return(z);}函数说明例

自定义函数说明38形式:函数类型函数名(形参类型说明表);作用:系统检验函数类型、参数个数及类型及类型是否符合要求自定义函数说明注意:被调用函数定义出现在主调函数之前

则不必说明标准库函数说明:

#include<*.h>函数的调用39#include"stdio.h"floatadd(floatx,floaty){floatz;z=x+y;return(z);}voidmain(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}例

自定义函数无需说明40

方式:函数调用时才为形参分配单元,并将实参的值复制到形参单元;调用结束后,形参单元即被释放,实参单元仍保留并维持原来的值值传递方式形参与实参占用不同的内存单元单方向传递函数的调用方式

特点:41temp#include<stdio.h>swap(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intx=7,y=11;

swap(x,y);printf("x=%d,\ty=%d\n",x,y);}11x:y:

调用之前7a:b:711例

值传递方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论