C程序设计演示稿前一至八.ppt

上传人:小飞机 文档编号:6503627 上传时间:2023-11-07 格式:PPT 页数:84 大小:303.99KB
返回 下载 相关 举报
C程序设计演示稿前一至八.ppt_第1页
第1页 / 共84页
C程序设计演示稿前一至八.ppt_第2页
第2页 / 共84页
C程序设计演示稿前一至八.ppt_第3页
第3页 / 共84页
C程序设计演示稿前一至八.ppt_第4页
第4页 / 共84页
C程序设计演示稿前一至八.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《C程序设计演示稿前一至八.ppt》由会员分享,可在线阅读,更多相关《C程序设计演示稿前一至八.ppt(84页珍藏版)》请在三一办公上搜索。

1、C程序设计,第章第章,吉林师范大学谭振江,第1章C语言概述,“高级语言”汇编语言:优点:可以充分发挥机器硬件的功能,并提高质量。缺点:必须熟悉机器的指令系统,而指令系统又是和具体机器的内部结构密切相关的,所以所编写的程序依赖于计算机硬件,可读性和可移植性比较差。一般高级语言:优点:可读性和可移植性比较好。缺点:难以对硬件进行操作,如内存地址、位操作等。,1.1 介绍:,C语言:具有一般高级语言的特性,也具有汇编语言的优点,所以有人称为“中级语言”高级语言有的:高级语言没有的:,算术运算关系运算逻辑运算,位运算单目、三目运算复合运算,1、语言简洁、紧凑,使用方便、灵活。32个关键字、9种控制语句

2、。2、运算符丰富34种运算符 3、数据类型和数据结构丰富。基本类型(整型、字符型、实型)构造类型(数组、结构体、共用体)指针、文件、空类型 数据结构(链、表、树、栈等),1.2 C语言的特点,4、具有结构化控制语句5、语法不严格松散结构,即语法检查不严格,编程时必须控制好。6、C语言允许直接访问物理地址,能进行位操作。7、目标代码质量高,程序执行效率高。8、输入输出采用函数而无输入输出语句,可移植性好,1.3 用C库函数组装程序,用库函数必须注意包含相应的头文件#include#include#include,1.4 程序格式和特点,1、main()函数必须有且唯一 2、函数是C语言程序的基本

3、单位3、大小写敏感4、无行概念,(1)、语句以分号结束(2)、以号开头的编译预处理语句无分号(3)、/*/加在C语言任何部分作注释说明,采用小写,大写有特殊意义(宏,常量等),1.5 程序执行从main函数开始,Turbo C 是一个集成环境,编辑、编译、连接、执行。1、源程序扩展名.c2、Turbo C 的使用 TC选择工作目录建立工作环境建立工作环境F9编译、连接。运行Alt+R.3、建立工作环境,例题例1例3,讲解、说明,上机题:,1、建立一个自己的工作环境2、熟悉Turbo C环境3、输入并调试运行例1-例34、自己编写C程序习题1.5、1.6,第2章数据描述和基本操作,程序,2.1

4、C的数据类型:,对数据的描述(数据结构),对操作的描述(算法),1、不同的数据占用的空间不同,2、对应的运算不同,数据类型(P38),2.2 基本数据类型:,1、整型,shout 2字节int机器字长(2字节)-215(215-1)long 4字节,2、无符号类型,只对整型;也包含字符型,存放正数的范围扩大一倍,Unsigned 整型x;,2.2 基本数据类型:,3、实型,float 单精度 4字节double双精度8字节long double 长双精度16字节,2.2 基本数据类型:,4、字符型存贮形式,按ASCII码值;占一字节;与整型通用,相当一个字节整数。,2.2 基本数据类型:,5、

5、类型长度运算符sizeof(类型)用途:测试动态分配存贮空间 例如Asizeof(int);,2.3 常量和变量:,1、常量,(1)、数值常量,整型常量,实型常量,十进制 自然表示八进制零打头十六进制ox打头,指数形式E(e)前面有数,后面是整数小数形式.必须有“.”,(2)、字符型常量,用单引号包围的单一字符a A字符常量没有结束标志,(3)、字符串型常量,用双引号包围的0个或多个字符序列“china”有结束标志,(4)、特殊常量,(一)符号常量如:宏定义#define PI 3.14,(二)转义字符(换码序列)字母表示动作 见P(48),2、变量,(1)、变量的定义int x,y;,先定义

6、每个变量被指定为一确定类型便于编译系统检查如a%b,(2)、变量标识符,C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线。,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。,保留关键字预定义标识符用户自定义,(3)、变量的初始化,定义变量的同时给变量赋值如:int x=3,y=5;,2.4 表达式运算:,1、说明,例如表达式b=(a=x)*5,运算符的功能与运算量的关系优先级结合方向结果类型,2、算术运算符双目运算符,5%3=2-5%3=?5%-3=?,、/、(模运算符或求余运算符)a%b 这里a、b必须是整型数5/3=1-5/3=

7、-1(-2)舍入的方向不因定,“向零取整原则”,符号同左边的操作数,3、算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来,符合C语法规则的式子称C算术表达式。如:a*b/c-1.5+a同级时“从左到右”的结合原则,4、复合的赋值运算,+=、-=、*=、/=、%=、=、&=、=、|=只要有赋值号优先级较低,只比逗号运算符高如:a+=b a=a+b 累加器,注意a一定是变量b可以是表达式或变量,结合规律从右到左A+=3 a=a+3X*=y+8 x=x*(y+8),5、自增减运算,+、-a+,+a 自增a=a+1a-,-a 自减a=a-1后置运算、前置运算只能用于变量,不能用于常量或表

8、达式;结合方向是从右至左,6、关系运算,=!=If(x=y)真(非0为真)假(0为假),7、逻辑运算,(与)(或)!(非),(1)实型数不比较相等的1.0/3.0*3.0=1.0 x=-y就是小到一定形式就行了 106或108,e1?e2:e3(e为表达式),8、条件运算(三目),33,68逗号表达式,又称顺序求值运算符,9、逗号运算符和逗号表达式,2.5 类型转换:,1、隐式转换(1)必然转换(2)由低向高转换,一次到位转换P54(3)赋值转换2、显示转换强制类型运算(类型),第3章简单的C程序设计 顺序结构,3.1 C语句:,1、表达式语句,2、控制语句,3、函数调用语句,4、空语句,5、

9、复合语句,3.2 格式化输入输出函数:,(一)、格式输出Printf(“格式控制”,输出项序列);,(二)、格式输入scanf(“格式控制”,地址序列);,3.3 字符输入输出函数:,(一)、输入字符getchar(),(二)、输出一个字符Putchar(c);,3.4 顺序结构程序设计举例,第4章逻辑运算和判断选取控制,4.1 条件分支:,1、if语句的三种形式,(1)、if(表达式)语句(2)、if(表达式)语句1;else 语句2;(3)if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;,if语句的说明:,(1)表达式一般为逻辑表达式或关系表达式

10、,但可以是任意表达式,是任意的数值类型(整型、实型、字符型、指针型数据)(2)else 前面的分号不可缺少,它是if语句内嵌语句所要求的,缺少时语法错误。(3)if和else后面可以是一个操作语句,也可以是多个操作语句,若为多个语句必须用复合语句。,2、if语句的嵌套:,if语句中又包含一个或多个if语句。if(表达式1)if(表达式2)语句1;else 语句2;else if(表达式3)语句3;else 语句4;,3、条件运算符:,在if语句中执行一个赋值语句且给同一个变量。(1)条件运算符?:(2)条件运算符优先于赋值运算符,低于关系运算符和算术运算符。(3)条件运算符的结合方向“从右至左

11、”(4)条件运算符不能取代一般的if语句(5)表达式1的类型可以与表达式2和表达式3的类型不同。,4.2 开关分支switch语句:,是多分支选择语句,格式:Switch(表达式)case 判断值1:语句组1;break;case 判断值2:语句组2;break;default:语句组n;break;,switch语句的说明:,(1)switch后面的表达式应是整型、字符型或是枚举。(2)若表达式的值与某个case后面的判断值相等时就执行case后面的语句组,没有匹配值时执行default后面的语句组。(3)case后面的判断值不能重复。(4)case和 default出现的次序不影响执行结果

12、。(5)执行完一个case后面的语句,则转到下一个case继续执行,所以必须用break语句跳出。,第5章循环控制,5.1 循环结构:,循环结构是结构化程序设计的三种基本结构之一(1)当型循环结构,当条件成立时反复执行操作,直到条件为假时才停止循环。(2)直到型循环结构:先执行操作,再判断条件是否为假,若条件为假,再执行。如此反复,直到条件为真为止。,5.2 C语言中循环语句:,1.while2.for3.do while,当型循环,先判断后执行,直到型循环,先执行后判断,1.while和do while语句,(1)while(条件)语句;,如:,1.while和do while语句,(2)d

13、o 语句;while(条件);,如:,需要注意:(1)循环前的初始值(2)循环体内必须改变循环条件,使其趋于结束(3)循环体如果包含一个以上语句,应以复合语句出现(4)当while后面的表达式第一次值为真时,二者等价,否则二者不同。,循环次数不确定,只给结束条件。,2.for语句,“灵活”循环次数确定或不确定(只给结束条件),for(初值表达式;条件;修正表达式)语句;,如:,s=0;for(i=1;i=100;i+)s+=i;,for语句的说明:,(1)条件为真,则执行for语句中指定的内嵌语句(2)初值表达式和修正表达式可以是逗号表达式(3)e1,e2,e3 均可缺少,但分号保留(4)可以

14、取代while语句(5)初值表达式可以和循环变量无关,5.3 辅助控制:,1.break语句(1)跳出switch结构(2)用于循环体内,结束本层循环,一次退出一层循环2.continue语句 仅用于循环体内,使本次循环结束3.goto语句 goto 语句标号;标号:用标识符表示,规则同变量 退出多重循环,从内到外,5.4 循环的嵌套:,一个循环体内又包含另一个完整的循环结构三种循环结构可以互相嵌套。例题分析:,例题分析:例1 输入字符显示之。,#include Main()char c;while(c=getchar()!=EOF)putchar(c);,例题分析:例2 打印ASCII码0-

15、255的字符。,第6章数组,6.1 一维数组的定义和引用:,1 定义 类型说明符 数组名常量表达式 如 int a10;说明:(1)数组名(2)用方括号(3)数组长度,元素个数(4)不能含变量,数组:是有序数据的集合,数组中的元素应是同一类型。,2 引用 先定义,后使用的原则C规定:逐个引用数组元素,不能一次引用整个数组数组元素的表示形式:数组名下标规定:下标是整型常量或整型表达式 如 a5 或 a2*3等,3 初始化(1)在定义数组时对数组元素赋以初值规定:只有静态存贮数组和外部存贮数组才能初始化 static-静态 extern-外部(2)只给部分元素赋值(3)使数组中全部元素为0(4)在

16、对全部数组元素初始化时,可以不指定数组长度。,6.2 二维数组的定义和引用:,1 定义 类型说明符 数组名常量表达式 常量表达式 如 int a34;是特殊的一维数组 存贮顺序:按行存贮,多维数组同理,2 引用 数组元素的表示形式:数组名下标下标 如 a00 或 a01等3 初始化,6.3 字符数组:,用来存放字符数据的数组是字符数组,字符数组中每个元素存放一个字符。1 定义 类型说明符 数组名常量表达式 如:char a10;int a10;,2 初始化static char c5=c,h,i,n,a;注(1)如果字符个数大于数组长度则语法错(2)如果字符个数小于数组长度则将字符赋给数组前面

17、的元素,其余元素为空格(3)字符个数等于数组长度时可以省略数组长度3 引用 可以引用字符数组中的一个元素,得到一个字符。,4 字符串和字符串结束标志字符数组长度:实际长度0;有效长度字符串结束标志 0表示“china”共有5个字符,但占6个字节可以用字符串常量来初始化字符数组Static char c=“china”;也可写成static char c=“china”;在C中将字符串作为字符数组来处理,为了测定字符串的实际长度0作为结束标志。,5 字符数组输入、输出(1)getchar()/putchar()(2)用格式符%c输入、输出(3)将整个字符串一次输入、输出,用格式符%s如,Stat

18、ic char c=“china”;Printf(“%s”,c);,注(1)输出字符不包括结束符0;(2)用%s时输出项是数组名;(3)长度大于实际长度时也到、0结束;(4)用scanf函数输入一个字符串,利用一个scanf函数输入多个字符串时,以空格分隔。static char c6;scanf(“%s”,c);printf(“%s”,c);所以一维字符数组可以看作是“字符串变量”,6 字符串输入、输出(1)gets(str)输入一个字符串到字符数组(2)puts(str)可以包含转义字符,如0,n等,7 字符串函数#include(1)拷贝 strcpy(str1,str2);目的 源注:

19、str1长度str2长度str1是数组名形式,str2可以是字符串常量,不能用赋值语句将字符串常量或字符数组赋给一个字符数组。如:str1=“china”;str1=str2;,(2)字符串连接 strcat(str1,str2);目的 源注:作用是把字符2连到字符1后面,结果放在字符数组1中,所以字符数组1必须足够大,初始化时不能省略长度;连接时第一个0取消。,(3)字符串比较strcmp(str1,str2);(4)测试字符串长度函数strlen(str)(5)将字符串中大写字母转成小写字母函数strlwr(str)(6)将字符串中小写字母转成大写字母函数strupr(str),第8章模块

20、化程序设计,8.1 函数定义:,在C中子程序的作用是由函数来完成的,使用的角度函数有两种(1)系统函数(2)用户定义函数;从函数的形式上分(1)无参函数(2)有参函数格式:函数类型 函数名(形式参数)函数体;,模块化设计;结构化编程。,说明:函数类型-返回值的类型 如:float aver(成绩表)void-无返值 main()就应是void类型 默认时为int型形参:(int a,int b,float r)或(a,b,r)int a,b;float r;函数类型 函数名()称为“空函数”,8.2 函数参数和函数值:,1、形式参数和实际参数定义函数时函数名后面括号中的变量形参调用函数时函数名

21、后面括号中的表达式实参通过函数调用使两个函数中的数据发生联系说明:(1)形参变量在函数调用前无分配存贮空间(2)实参可以是常量、变量、表达式或数组名(3)在被定义的函数中,必须指定形参类型(4)实参和形参类型应一致,否则类型不匹配错误(5)形参和实参间的传递是单向的“值传递”,不同单元。,2、函数的返值(1)函数的返值是通过return语句获得的,return后面可以是一个表达式。(2)函数值的类型,在定义函数时指定函数值类型,如果不指定,按整型处理,函数类型决定返值类型。(3)如果被调函数中没有return语句,则返值不确定。(4)如果不带回值,应将函数定义为void类型。,8.3 函数的调

22、用:,1、函数调用的一般形式函数名(实参表列);说明:对实参表的求值顺序并不是确定的,一般是从右至左,这种情况在printf函数中也同样存在如:i=2;Printf(“%d%dn”,i,+i);,结果:3 3,2、函数的调用方式函数在程序中出现的位置;(1)函数语句(2)函数表达式(3)函数参数,3、被调函数的说明在一个函数中调用另一个函数所具备的条件是:(1)被调函数是已经存在的函数(库函数、自定义)(2)如果是库函数则#include 命令相关头文件(3)如果是用户自定义函数,在主调函数中对被调函数声明:函数类型 函数名(参数表);特例:(1)函数的返值是整型或字符型(2)被调函数的定义在

23、主调函数之前(3)在所有函数定义之前,说明了函数类型,8.4 函数的嵌套调用:,关系:自身可调用,相互之间可调用,即在调用一个函数的过程中,又调用另一个函数。如图8.5,函数1,函数2,函数3,例8.6 P155,8.5 函数的递归调用:,1、直接递归2、间接递归,函数A,函数A,函数B,8.6 数组作为函数参数:,数组元素作参数同变量相同,数组名作为参数时传递整个数组。当用数组名作函数参数时,实参和形参都应用数组名(或指针变量)。,例8.11 P165,说明(1)主调函数和被调函数分别定义数组(2)实参数组和形参数组类型应一致(3)实参数组和形参数组大小可以不一致,C编译对形参数组大小不作检

24、查,只是将实参首址传递给形参数组。如:例8.12(4)不是“传值”而是“传址”例:8.13(5)也可以用多维数组名作函数参数,同上。例:8.14,8.7 局部变量和全局变量:,1、局部变量在函数内定义的变量例:float f1(int a)int b,c;.,说明(1)主函数main中定义的变量只在主函数中有效(2)不同函数中可以使用相同的变量(3)形参也是局部变量(4)在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,离开复合语句该变量就无效。,8.7 局部变量和全局变量:,2、全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其它函数所

25、共用,它的有效范围为“从定义的位置开始到文件结束”。例:8.15,说明(1)设全局变量的作用是增加了函数间数据联系,可以从函数得到一个以上的返值,是“双向传递的”。(2)不要轻易使用全局变量在程序执行过程中都占用存贮单元;通用性降低;不清晰。(3)在定义点之前引用外部变量要用关键字extern作“外部变量说明”(4)在同一源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。,8.8 动态存贮变量与静态存贮变量:,1、变量的存贮类别 以上是从变量的作用域角度分;从变量值生存期角度分静态存贮变量和动态存贮变量。静态存贮区存放:全局变量动态存贮区存放:(1)函数形参变量(2

26、)局部变量(未加static说明的)(3)函数调用时的现场保护和返回地址,程序区静态存贮区动态存贮区,用户区,说明C语言中每个变量和函数有两个属性,数据类型和数据存贮类别,一般形式。存贮类别 数据类型 变量表;存贮类别:auto(隐含)自动 static 静态 register 寄存器 extern 外部,8.8 动态存贮变量与静态存贮变量:,2、局部变量的存贮方式(1)不作专门说明都是动态分配存贮空间的,存贮在动态存贮区中,编译系统自动处理。(2)有时希望函数中的局部变量值在函数调用结束后不消失这时就应该指定该局部变量为“局部静态变量”用static说明 例8.17 P174,说明C语言中每

27、个变量和函数有两个属性,数据类型和数据存贮类别,一般形式。存贮类别 数据类型 变量表;存贮类别:auto(隐含)自动 static 静态 register 寄存器 extern 外部,局部静态主变量说明(1)局部静态变量属于静态存贮类别,在静态存贮区内分配,存贮单元在程序整个运行期间都不释放(2)在编译时赋初值,只赋初值一次,并保留上次函数调用时的值(3)不赋值时编译时自动赋初值勤0(4)C规定只有全局变量和局部静态变量时才能对数组初始化(5)局部静态变量在函数调用结束后仍然存在,但其它函数是不能引用它的(6)对使用频繁的局部自动变量或形参,可以作为寄存器变量,用关键字register说明 例8.19(7)全局变量和局部静态变量不能定义为寄存器变量,8.8 动态存贮变量与静态存贮变量:,3、全局变量的存贮方式(1)允许其它文件中的函数引用(2)只能被本文件中的函数引用时,用static说明 例 static int a;存贮类别小结:P180,8.9 内部函数和外部函数,1、内部函数 函数只能被本文件中其它函数所调用。static int fun(int a,int b)2、外部函数 extern int fun(int a,int b)属于“隐含”例8.22 3、如何运行一个多文件的程序 建立一个“项目文件”,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号