C语言程序设计(下)ppt.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计(下)ppt.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 ppt
- 资源描述:
-
1、2022-8-251C语言程序设计 第1章 C语言程序设计基础C2C语言程序设计 第4章 数 组C3第第第第第第4 4 4 4 4 4章章章章章章 数数数数数数 组组组组组组C语言程序设计 第4章 数 组C2022-8-2542022-8-255类型说明符类型说明符 数组名数组名 常量表达式常量表达式2022-8-256(1)数组名是标识符,它遵循标识符的命名规则。例如:)数组名是标识符,它遵循标识符的命名规则。例如:int a8;(2)数组名后的常量表达式一定要用方括号括起来,不能用圆括号)数组名后的常量表达式一定要用方括号括起来,不能用圆括号或其他形式的括号。例如下例不合法:或其他形式的括
2、号。例如下例不合法:int a(6);(3)常量表达式用来规定数组元素的数目,即数组的长度。)常量表达式用来规定数组元素的数目,即数组的长度。一个数组所占用长度一个数组所占用长度=数组类型长度数组类型长度*数组长度。例如:数组长度。例如:int a5;在在a5中,中,5表示数组表示数组a有有5个元素,下标从个元素,下标从0开始,数组元素分别是:开始,数组元素分别是:a0,a1,a2,a3,a4。数组被定义为整型,每个数组元素占两。数组被定义为整型,每个数组元素占两个字节,因此该数组在内存中占用个字节,因此该数组在内存中占用10字节的连续空间。字节的连续空间。(4)常量表达式中可以包括常量和符号
3、常量,不能包含变量。也就)常量表达式中可以包括常量和符号常量,不能包含变量。也就是说是说C语言不允许对数组的大小做动态定义。语言不允许对数组的大小做动态定义。例如下例不合法:例如下例不合法:int an;2022-8-257score0score1score2score3score491.534.567.572.084.0低地址低地址高地址高地址score数组数组2022-8-258初始化:在定义数组时给数组元素赋初值。初始化:在定义数组时给数组元素赋初值。1在定义数组时,对全部数组元素赋初值在定义数组时,对全部数组元素赋初值 例如:例如:int a5=0,1,2,3,4;此时可以省略数组长度
4、,例如:此时可以省略数组长度,例如:int a=0,1,2,3,4;2在定义数组时,对部分数组元素赋初值在定义数组时,对部分数组元素赋初值 例如:例如:int a5=1,2,3;系统为其余元素赋系统为其余元素赋 0。3当初值的个数多于数组元素的个数时,编译出错当初值的个数多于数组元素的个数时,编译出错 例如:例如:int a5=0,1,2,3,4,5;2022-8-2592022-8-2510(1)数组必须先定义,然后使用。)数组必须先定义,然后使用。(2)只能逐个引用数组元素,不能一次引)只能逐个引用数组元素,不能一次引用整个数组。用整个数组。(3)引用数组元素,下标不可越界,否则)引用数组
5、元素,下标不可越界,否则会造成程序溢出错误,严重时甚至会对操作会造成程序溢出错误,严重时甚至会对操作系统造成破坏引起系统崩溃。系统造成破坏引起系统崩溃。2022-8-25112022-8-25122022-8-2513输入数组a的各个元素for(i=1;i=9;i+)min=ifor(j=i+1;jaiT Fmin=j交换amin和ai输出已经排序的10个数2022-8-25142022-8-2515数据类型数据类型 数组名常量表达式数组名常量表达式1常量表达式常量表达式2的定义的定义2022-8-2516x00 x01x02x10 x11x12元素元素的的2022-8-2517x0是数组名,
6、是元素是数组名,是元素x00的地址的地址x1是数组名,是数组名,是元素是元素x10的地址的地址二维数组可看作是一种特殊的一维数组二维数组可看作是一种特殊的一维数组2022-8-2518例例:int a23=1,2,3,4,5,6;例:例:int a23=1,4;初始化后结果:初始化后结果:1 0 0 4 0 02022-8-25192022-8-25202022-8-2521a34=3;/*下标越界下标越界*/a1,2=1;/*应写成应写成 a12=1;*/例:例:int a34;a00=3;a01=a00+10;2022-8-2522main()int a44,sum=0;int i,j;p
7、rintf(请输入矩阵元素请输入矩阵元素:n);for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&aij);/*输入矩阵元素输入矩阵元素*/for(i=0;i4;i+)sum=sum+aii;/*对矩阵元素对角线元素求和对矩阵元素对角线元素求和*/printf(矩阵对角线元素之和矩阵对角线元素之和:%d,sum);2022-8-25232022-8-252411 21 2 11 3 3 11 4 6 4 15 5 10 10 12022-8-25252022-8-25264.3 字符数组与字符串字符数组与字符串基本概念基本概念不是字符串不是字符串2022-8-2527
8、2022-8-2528 不是字符串不是字符串BEIJING0002022-8-2529 不是字符串不是字符串BEIJING0002022-8-2530 思考:哪个数组存放的是字符串思考:哪个数组存放的是字符串2022-8-2531 2022-8-2532【例例4.9】输出一个等腰三角形图形。输出一个等腰三角形图形。字符数组的引用与整型数组的引用形式相同,采用下标字符数组的引用与整型数组的引用形式相同,采用下标引用,即引用,即数组名数组名 下标下标 *2022-8-2533main()char a59=,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,
9、*,*;int i,j;for(i=0;i5;i+)for(j=0;j0)printf(s1s2);else printf(s1 y?x:y;return(z);int max(x,y)int x,y;或或int max(int x,y)或或int max(x,y)int x,y,z;z=x y?x:y;return(z);形参也可以这样定义形参也可以这样定义 2022-8-2553函数名(函数名(实际参数表实际参数表)在在C语言中,把函数调用也作为一个表达式。语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数因此凡是表达式可以出现的地方都可以出现函数调用。例如:调
10、用。例如:welcome();if(iabs(a)max)max=iabs(a);m=max(c,max(a,b);函数调用的一般形式:函数调用的一般形式:2022-8-25542022-8-2555程序输出结果:程序输出结果:7,6,6,7 2022-8-25562022-8-2557编程如下:编程如下:void main()int n;printf(input numbern);scanf(%d,&n);s(n);printf(n=%dn,n);int s(int n)int i;for(i=n-1;i=1;i-)n=n+i;printf(n=%dn,n);input number100n
11、=5050n=100形式参数(形参)形式参数(形参)例例5.3】本例题中实参将值传递给形参,形参值改变不影响实参值。本例题中实参将值传递给形参,形参值改变不影响实参值。2022-8-2558 当函数被调用时才给形参分配内存单元。调用结当函数被调用时才给形参分配内存单元。调用结束,所占内存被释放。束,所占内存被释放。实参可以是常量、变量或表达式,但要求它们有实参可以是常量、变量或表达式,但要求它们有确定的值。确定的值。实参与形参类型要一致,字符型与整型可以兼容实参与形参类型要一致,字符型与整型可以兼容。实参与形参的个数必须相等。在函数调用时,实实参与形参的个数必须相等。在函数调用时,实参的值赋给
12、与之相对应的形参。参的值赋给与之相对应的形参。“单向值传递单向值传递”。2022-8-2559函数的返回值是通过函数的返回值是通过return语句带回到主调函数的语句带回到主调函数的如果不一致,系统自动将表达式类型转如果不一致,系统自动将表达式类型转换为函数类型换为函数类型2022-8-2560void swap(int x,int y)main()swap(a,b);2022-8-2561函数类型函数类型 函数名(函数名(参数类型参数类型1 1 参数名参数名1 1,);或或 函数类型函数类型 函数名(函数名(参数类型参数类型1 1,参数类型参数类型2 2,);第二种形式省略了参数名,此种形式
13、也称为第二种形式省略了参数名,此种形式也称为函数的原型函数的原型。2022-8-25625.3.1 函数的嵌套调用函数的嵌套调用2022-8-2563运行结果:运行结果:s=3629042022-8-25645.3.2 函数的递归调用函数的递归调用1递归的基本概念递归的基本概念递归调用递归调用:一个函数直接或间接地调用了它本身:一个函数直接或间接地调用了它本身,就称为函数的递归调用。,就称为函数的递归调用。递归函数递归函数:在函数体内调用该函数本身。:在函数体内调用该函数本身。int f(int x)int y;z=f(y);return z;例如:例如:直接调用直接调用f函数本身函数本身“从
14、前有一座山,山里有一座庙,庙里有一个老和尚,从前有一座山他在讲故事,讲的是什么呢?”这个故事就是递归的逻辑思想,在现实生活中老和尚讲累了或者到吃饭时候不讲就结束了。2022-8-2565【例例5.5】利用函数递归调用求利用函数递归调用求3!思路思路:以求:以求4的阶乘为例的阶乘为例:4!=4*3!,3!=3*2!,2!=2*1!,1!=1,0!=1。递归结束条件递归结束条件:当:当n=1或或n=0时,时,n!=1。递归公式:递归公式:2022-8-2566#includelong f(int n)if(n=1)return 1;elsereturn n*f(n-1);main()int x;s
15、canf(%d,&x);printf(%ld,f(x);运行情况如下:运行情况如下:67202022-8-2567 回回 推推main()fact(4)fact(3)fact(2)fact(1)y=fact(4);f=4*fact(3);f=3*fact(2);f=2*fact(1);f=1;return 24 return 6 return 2 return 1 递递 推推 2022-8-25682022-8-25692022-8-25702022-8-25712022-8-25722022-8-25732022-8-2574变量的作用域变量的作用域5.5.1 局部变量局部变量变量的作用域变
16、量的作用域:变量在程序中可以被使用的范围。:变量在程序中可以被使用的范围。根据变量的作用域可以将变量分为根据变量的作用域可以将变量分为局部变量和全局局部变量和全局变量。变量。局部变量(局部变量():在:在函数内函数内或或复合语句内复合语句内定定义的变量以及义的变量以及。作用域作用域:函数内或复合语句内。:函数内或复合语句内。2022-8-2575void sub(int a,int b)int c;a=a+b;b=b+a;c=b-a;printf(sub:ta=%d b=%d c=%dn,a,b,c);main()int a=1,b=1,c=1;printf(main:ta=%d b=%d c
17、=%dn,a,b,c);sub(a,b);printf(main:ta=%d b=%d c=%dn,a,b,c);int a=2,b=2;printf(comp:ta=%d b=%d c=%dn,a,b,c);printf(main:ta=%d b=%d c=%dn,a,b,c);“分程序分程序”或或“程序块程序块”程序输出结果:程序输出结果:main:a=1 b=1 c=1sub:a=2 b=3 c=1main:a=1 b=1 c=1comp:a=2 b=2 c=1main:a=1 b=1 c=12022-8-25765.5.2 全局变量全局变量全局变量全局变量():在):在函数外部函数外部
18、定义的定义的变量。变量。作用域作用域:。如在其作用域内的函数或分程序中定。如在其作用域内的函数或分程序中定义了同名局部变量,则在局部变量的作用域义了同名局部变量,则在局部变量的作用域内,同名全局变量暂时不起作用。内,同名全局变量暂时不起作用。2022-8-2577int a=5;void f(int x,int y)int b,c;b=a+x;c=a-y;printf(%dt%dt%dn,a,b,c);main()int b=6,c=7;f(b,c);printf(%dt%dt%dn,a,b,c);int a=9,b=8;printf(%dt%dt%dn,a,b,c);c=10;printf(
19、%dt%dt%dn,a,b,c);printf(%dt%dt%dn,a,b,c);printf(%dt%dt%dn,a,b,c);程序输出结果:程序输出结果:5 11 -25 6 79 8 79 8 109 8 105 6 10全局变量全局变量2022-8-25785.5.3 变量的存储方式变量的存储方式变量的属性2022-8-2579变量的完整声明一般形式为:变量的完整声明一般形式为:1自动变量(自动变量(auto类别)类别)局部变量可以定义为自动变量。局部变量可以定义为自动变量。main()int x,y;main()auto int x,y;等价等价可省2022-8-25802022-8
20、-2581【例例5.12】求求1+2+3+500的和。的和。main()register i,s=0;for(i=1;i p1、p2=p1。指针与一个整型数据进行比较是没有意指针与一个整型数据进行比较是没有意义的义的。不同类型指针变量之间比较是非法的不同类型指针变量之间比较是非法的。NULL可以与任何类型指针进行可以与任何类型指针进行=、!=的关系运算,用于判断指针是否为空指针的关系运算,用于判断指针是否为空指针。2022-8-251042022-8-251052022-8-251062022-8-25107a a000123a a4442022-8-251082022-8-251092022
21、-8-251102022-8-251112022-8-25112程序的输出结果913 17 213 19 -202022-8-25113【例例6.14】用字符数组存放一个字符串。用字符数组存放一个字符串。main()char string=I love China!;printf(%sn,string);运行程序,输出结果:运行程序,输出结果:I love China!2022-8-25114【例例6.15】用字符串指针指向一个字符串。用字符串指针指向一个字符串。main()char*string=I love China!;printf(%sn,string);2022-8-25115202
22、2-8-251162022-8-251172022-8-251182022-8-251192022-8-251202022-8-25121指针作为函数参数的作用是将一个变量的地址传指针作为函数参数的作用是将一个变量的地址传送到另一个函数中。送到另一个函数中。2022-8-251222022-8-251232022-8-251242022-8-251252022-8-251262022-8-251272022-8-251282022-8-251292022-8-251302022-8-25131C语言程序设计 第第7章章 预预处处理理命命令令C2022-8-251327.1 预处理命令简介预处理
23、命令简介7.2宏定义宏定义7.3文件包含文件包含7.4条件编译条件编译7.5小结及常见错误列举小结及常见错误列举语言程序设计 第七章 预处理命令C本章主要内容2022-8-25133本章主要内容:本章主要内容:1.学习和掌握学习和掌握C语言提供的多种预处理命令功能,语言提供的多种预处理命令功能,如如宏定义、宏定义、文件包含、条件编译等。文件包含、条件编译等。2.合理地使用预处理功能编写的程序便于合理地使用预处理功能编写的程序便于阅读、修改、阅读、修改、移植和调试,移植和调试,也有利于模块化程序设计。也有利于模块化程序设计。语言程序设计 第七章 预处理命令C2022-8-25134 7.1 预处
24、理命令简介预处理命令简介语言程序设计 第七章 预处理命令C宏定义宏定义文件包含文件包含条件编译条件编译 C语言提供的预处理功能主要包含三种语言提供的预处理功能主要包含三种 这三种功能分别使用宏定义命令、文件包含命这三种功能分别使用宏定义命令、文件包含命令和条件编译命令来实现。预处理命令之所以令和条件编译命令来实现。预处理命令之所以都是以都是以“#”开头的目的是为了与其他开头的目的是为了与其他C语句进语句进行行 区别。区别。命令的实现和注意命令的实现和注意2022-8-25135 7.2宏定义宏定义语言程序设计 第七章 预处理命令C7.2.1不带参数的宏定义不带参数的宏定义 1.定义格式定义格式
25、 2.应引起注意的问题应引起注意的问题 3.关于不带参数宏的其他用法关于不带参数宏的其他用法7.2.2带参数的宏定义带参数的宏定义 1.定义格式定义格式 2.应引起注意的问题应引起注意的问题2022-8-25136 不带参数宏的宏名后没有参数。不带参数宏的宏名后没有参数。语言程序设计 第七章 预处理命令C7.2.1不带参数的宏定义不带参数的宏定义 1.定义格式定义格式 其定义的一般形式为:其定义的一般形式为:#define 标识符标识符 字符串字符串 其中的其中的“#”表示这是一条预处理命令。凡是以表示这是一条预处理命令。凡是以“#”开头的均开头的均为预为预 处理命令。处理命令。“define
展开阅读全文