《C语言程序设计》教案清华谭浩强_第1页
《C语言程序设计》教案清华谭浩强_第2页
《C语言程序设计》教案清华谭浩强_第3页
《C语言程序设计》教案清华谭浩强_第4页
《C语言程序设计》教案清华谭浩强_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章语言及程序设计概括本章要求:认识C语言的特点、C语言与其他高级语言比较有什么异同;认识C程序在PC机上的成立、编译和运转过程;认识C语言程序设计思想的基本篇;要点:C语言的主要特点;C语言在PC机上的运转过程及上机操作过程;常用算法的应用难点:无一、C语言概括语言是目前国际上在各样计算机运转较为宽泛流行的一种高级语言。主要表现为:语言:合适于作为系统描绘语言可用来写系统软件。拥有高级语言的特点,又有初级语言(汇编语言)的特点。C语言:是AT&T贝尔实验室的DennisRitchie在1972年发明的。C语言:是在B语言的基础上发展起来的。(ALGOL60)C语言:最早开始是用于UNIX操

2、作系统。(C语言和UNIX是相辅相成的)DBASE、MicrosoftExel、MicrosoftWord、PC-DOS等,则是用C语言加上若干汇编子程序编写的。1983年:拟定的新标准,称为(美国国家标准化协会)ANSIC1987年:TurboC1.0(Borland)1988年:TC1.5(图形和文本窗口)1989年:TurboC2.0(DOS操作系统、查错、Tiny模式生成com文件)1991年:TurboC+(3.0)支持windows3.X说明:TurboC语言能够在程序的任何地方嵌入汇编代码,提升速度,能够直接使用存储器和寄存器。二C语言的特点1语言简短、紧凑、使用方便、灵巧C语言

3、:共有32个要点字,9种控制语句;程序书写自由,主要用小写字母表示;2运算符丰富C语言的运算符包含的范围很宽泛,共有34种运算符;即:把括号、赋值、强迫种类变换都作为运算符办理3有丰富的数据种类整型、实型、字符型、数据种类、指针种类、结构体种类、共用体(联合)种类等。实现复杂的数据结构(链表、树、栈、图)的运算。4拥有结构化的功能,用函数作为程序模块,实现程序的模块化5语法限制不太严格,程序设计自由度大。(放宽了语法检查)例:1)对数组下标越界不作检查,由程序编写者自己保证程序的正确;2)整型数据、字符型数据、逻辑型数据能够通用。6能直接接见物理地点,能进行位(bit)操作,能实现汇编语言的大

4、多数功能,能够直接对硬件进行操作。7生成目标代码质量高,程序履行效率高。8用C语言编写的程序,移植性较好。说明:语言比其他高级语言难掌握,对编程人员要求较高程序员使用C语言编写程序会感觉限制少、灵巧性大,功能强,能够编写出任何种类的程序。三C程序的组成例:main()/*主函数*/inta,b,sum;/*定义变量*/a=123;b=456;sum=a+b;printf(“n”,sum);/*输出变量*/说明:1)程序一般用小写字母书写;2)每个程序必然要有一个main()(只好一个),称主函数;注:C程序是由函数组成的,函数是C程序的基本单位。函数:系统供给的库函数;用户设计的函数。3)程序

5、体必然在之间;4)每个语句的结尾,必然要有“;”作为停止符。5)用/*.*/作说明四、C程序的上机过程1演示书:P5程序2上机步骤书:P7注:C语言是一种编译语言,编译语言的特点:编译连结源程序目标程序履行程序C编译程序*.OBJLink程序*.C*.EXE3windows下C语言的运转目前DOS下运转C语言软件为:visualC+6.0的特点:是一个把编写编译连结运转等所有操作集中在一个界面上。(2)visualC+6.0的操作及运转书:P8五、算法的见解1算法的见解书:P13算法:程序的操作步骤。程序中的数据在程序设计中:操作步骤有:程序=数据结构+算法沃思NikiklausWirth程序

6、=算法+数据结构+程序设计方法+语言工具和环境2计算机算法分为两大类:数值运算算法非数值运算算法1)数值运算算法:求数值解;经过运算得出一个详细值,如求方程的根等注:数值运算一般有现成的模型,算法较成熟。2)非数值运算算法:用于事务管理,如图书检索、人事管理等。3、常用简单算法(1)累乘即:1234510012S(结果)S3S(结果)S4S(结果)S100S(结果)(2)累加即:1+2+3+4+5+1001+2S(结果)S+3S(结果)S+4S(结果)S+100S(结果)(3)找最大值5,2,4,12,95max(max放最大值,后边的数都和它比较)2max不能立4max不能立12max成立:

7、12max9max不能立注:该算法可扩展为在一批数据中,找某一个数(4)其他算法P15例2.2例2.3例2.4例2.5课余自学(必然)4、算法的表示常用的有:自然语言传统流程图结构化流程图伪代码PAD图(1)传统流程图起止框输入输出框判断框办理框流程线连结点表示方法:P19例注:传统流程图对流程线的使用没有严格限制,难以实现结构化程序设计为了限制流程线的滥用,提出三种基本结构:序次结构选择结构循环结构序次结构选择结构ft.f语句表达式表达式t语句语句语句1语句2循环结构表达式语句a)“当型”结构语句表达式b)“直到型”结构(2)N-S流程图特点:去掉了带箭头的流程线,所有算法写在一个矩形框内。

8、称N-S结构化流程图PA成立不能立当P1成立ABABA直到P1成立序次结构选择结构循环结构作业:p372.4上机:熟习visualC+6.0的操作及运转第三章数据种类、运算符与表达式本章要求:本章是C语言的基本见解开篇,所介绍的见解是学习C语言的基础;要求熟练掌握数据种类、运算符与表达式。要点:C语言数据种类定义的方法和分类。C语言运算符、表达式的使用以及它们的主要特点。难点:自增、自减运算符、赋值运算符、逗号运算符及它们的混淆使用一数据种类见解:算法办理的对象是数据,而数据是以某种特定的形式出现。在C语言中,数占有:常量、变量;一般它们都有一定的数据种类。(C语言的数据结构是以数据种类形式出

9、现的)1数据种类分类:数据种类基本种类结构种类整型int字符型实型(浮点型)列举种类数组种类结构体种类struct共用体(联合)种类单精度型双精度型unionfloatdouble指针种类*空种类void说明:在程序中对用到的所有数据都必然指定其数据种类。2C语言中的常量和变量常量:在程序运转过程中,其值不能够够被改变的量。变量:在程序运转过程中,其值能够改变的量。说明:1)常量和变量,都要有一个名字表示它;习惯上,符号常量(又名)名用大写,变量用小写。符号常量的定义为:#defineP30其他常量:直接用数据表示例:2345.5e3e+22)在C语言中,对变量要先定义,后使用。3)假如一个变

10、量被指定为一确立种类后,在C语言编译时,就能为其分派相应的存储单元。存储地点)2000a3变量名变量值存储单元地点的见解3常用的基本数据种类(1)整型1)整型常量:十进制整数123,-11,0非0开头八进制整型0123,-0110开头十六进制整型0 x110 x200 x0D0XFF0 x4e0 x/0X开头说明:在一个整常量后边加一个字母:l或L,是长整型常量。22L0733L0 xae4l2)整型变量:定义存储字节数的范围基本型intx(2字节)-3276832767短整型shortintx(2字节)-3276832767长整型longintx(4字节)-2,147,483,6482,14

11、7,483,647无符号型unsignedintx(2字节)065535unsignedshortx(2字节)065535unsignedlongx(4字节)04,294,967,295注:数据在内存中是以:二进制形式寄存如:9为00001001例:x=13;x=015;x=0 xD存储结构见P44图3.5注:数据超出数据范围,会发生数据溢出例3.2、3.3(2)实型(浮点数)1)实型常量:十进制整数1.23.0123指数形式1.23e3,1.00e-32)实型变量:数的表示范围P46表3.2单精度floatx(4字节)3.4x10-383.4x1038TC默认双精度doublex(8字节)1

12、.7x10-3081.7x10308说明:实型常量不分float和double,只有十进制表达方式有的C编译系统64位存储方式,如尾加f或F可表示32位:324.567f例:x=1.23;x=123e3P47例3.4(存储精度)(3)字符型1)字符常量:用单引号括起来的一个字符aAb)转义字符(由“专用字母”)书P48表3.30字符串结束符n换行t水平制表ddd八进制数xdd十六进制数2)字符变量:例3.5charc(1字节)说明:一个字符变量,只好放一个字符常量。实质是把该常量的量中。即:B(66)c(字符变量)ASCII值,送入字符变书P374ASCII表p50例3.6-7c=Bc的内容为

13、66故:字符数据能够进行算术运算;即:字符数据在内存中的存储方式c=B+2书P50为68unsignedchar0-255char-128-127有符号数在TC中是用补码表示的127(0 x7f)01111111128(0 x80)10000000复习:补码的规定:正数:其原码、反码、补码相同负数:最高位为1,其他各位为原码的反码(原码的相应位取反),此后对整个数加1。140(0 x8c)1000110011110011+1(取反加1)11110100-0 x74-0 x7410001011+1(取反加1)100011000 x8c(0 x80为负数-74高位为1)3)字符串常量用双引号括起来

14、的字符“a”,“ABFD”“a”=“0”说明:C规定,在每一个字符串的结尾应加一个“字符串结束标记”(A0),以便系统判断字符串能否结束。4各样数值间的混淆运算1)整型、字符型、单精度型、双精度型数据能够混淆运算2)字符型、整型能够通用规则:高doublefloatlongunsigned比方低intchar,short10+a+1-8765.1234*b-858873.593200(TC默认6位小数)10+97+1.5-8765.1234*98二运算符和表达式表达式:由变量、常量、函数等运算对象和运算符组成的式子运算符作用:1)能把一些基本运算模块用单调的运算符办理2)使用丰富的运算符,组成

15、多种表达式C运算符有优先级,优先级高的先履行,同级的由联合规则决定其办理规则C运算符有两种联合规则:1)从左到右的联合运算序次;即:a=5+x10;运算对象与左侧运算符联合2)从右到左的联合运算序次;即:x=y=7;运算对象与右侧运算符联合C运算符分类书P551基本运算符(算术运算符)C语言有7个基本运算符1)单目运算符:(表示符号)正号“+”负号“-”2)双目运算符:+、-、*、/、%(模运算,求余运算,双侧为整数)说明:a)运算序次的联合方向从左到右b)求余(取模)运算符是对两个整数相除的余数,计算结果的符号与第一个数的符号相同。即:-5%3值为-2、-5%-3值为-2、5%-3值为22自

16、增、自减运算符(优先级高于算术,右联合)作用:使变量的值增1或减1+i(-i)在使用i以前,先使i的值加1(减1),此后再使用i。i+(i-)先使用i的值,此后再使i加1(减1)。例:i=4;j=+i;i值为5,值为5;j=i+;i值为5,j值为4说明:1)自增、自减运算符+(-),只好用于变量,不能够够用于常量或表达式即:5+、(a+b)+不合法2)运算序次的联合方向从右到左例例:main()inti=3z,x,y;z=(i+)+(i+)+(i+)x=y=3;/结果:z值为9i值为6z=x+y;/变量x右联合运算符+(不是3+4+5=12)printf(z=%d,x=%d,y=%d,z,x,

17、y);输出结果:z=6x=4y=3假如:z=-x+y;输出结果:z=0 x=4y=3x先为-4,此后+y,最后x+3赋值运算符和赋值表达式(优先级低于算术,右联合)(1)“=”赋值运算符作用:将一个数据赋给一个变量即:x=21注意:假如赋值运算符双侧的种类不一致,在赋值时,要进行种类变换。P61例即:floatf;f=23f值为23.0000符号位扩展(2)复合的赋值运算符3.9“+=、-=、*=、/=、%=”在赋值符“=”以前加上其他运算符称复合运算符(也称为自反运算符)例:a+=3x*=y+8等价于等价于a=a+3x=x*(y+8)y/=4m%=3等价于等价于y=y/4m=m%3说明:语言

18、采纳这类复合运算符:为了简化程序,使程序精练;提升编译效率。(3)赋值表达式格式:变量=表达式表达式:能够是1)常量、变量、算术表达式;2)赋值表达式即:a=(b=5)或a=b=5(运算序次的联合方向从右到左)例:a=b=c=6;a=5+(c=6)(结果a=11c=6)假如:a=3;求:a+=a-=a*a;有:1a*a;92)a=a-(a*a);a为:-12结果值为:-12-63)a+=-6-6+-64逗号运算符和逗号表达式(优先级最低,左联合)用“,”将两个表达式连结起来。格式:表达式1,表达式2即:3+5,6*9;例:3+5,6*9;值为54(先求解表达式1,再求解表达式2,最后逗号表达式

19、的值为表达式2的值)a=2*5,a*3;a值为10结果值为:30(先求:a=2*5,后求:a*3)x=(a=2*5,a*3),a+4a值为10 x值为30结果值为:14说明:使用逗号表达式的目的,但是为了获取各个表达式的值(常用于循环语句)解表达式1的结果可能影响解表达式2的值5强迫种类变换运算符(优先级高于算术,右联合)在要变换的数据前,用小括号括上要变换的数据种类即:(int)x;(int)(a+b)(int)x+y格式:(种类名)表达式C一般会自动进行数据种类变换P56例3.8,用于不能够够自动变换的地方x%3(floatf)6关系运算符和关系表达式(书P87)(优先级低于算术,左联合,

20、高于赋值)(1)6种关系运算符=(优先级高)=!=(优先级低)(2)关系表达式表达式关系运算符表达式即:aba+b=b+c(a=4)b)|(a+b=b+c)x&y值为11(a=4)&(b=8)1|(1)说明:逻辑表达式值:是一个逻辑值,即:“真”或“假”p90优先序次(由高到低):!(非)算术运算符关系运算符&和|求值短路:53&2|84-!01|(结果1)0&(结果0)如:a&b&ca0才判断a&b赋值运算符8条件运算符(书P97)格式:表达式1?表达式2:表达式3履行:先求解表达式1,为真(非零),求表达式2为假(为0),求表达式3例:y=(ab)?a:b;说明:a)条件运算符要求有三个操

21、作对象(称三目元运算符)b)条件运算符优先于赋值运算符y=(ab)?a:b;先求(ab)?a:b后赋值c)条件运算符的联合方向为“自右至左”(ab)?a:b可写为:ab?a:bab?a:b+5相当于:ab?a:(b+5)ab?a:cd?c:d相当于:ab?a:(cd?c:d)9位运算符(书P298)(一般掌握)位运算:是对字节或字中的实质位进行检测、设置、障蔽、移位。位运算符:&位逻辑与|位逻辑或位逻辑反右移位逻辑异或b?ac?a:c:bc?b:c相当于:ab?(ac?a:c):(bc?b:c)(求最大值,如a=2,b=8,c=5结果为:8)3运算符的优先序次(书P375附录)()、!+/-/

22、-转移、算术、关系(=)、关系(=!=)、&、|、条件(?)、赋值、逗号例:1)-a+相当于-(a+)2)x=4,y=7求:y+=+x-3x的值5y的值93)x=4,y=7求:y=y+x-3x的值4y的值94)a=7,x=2.5,y=4.7求:s=x+a%3*(int)(x+y)%*2/4s的值2.500000a%3*(int)(x+y)%*2=1(整型)/4(整型)=0.25=0(整型)5)a%3&a%5|a+b如:a=7,b=5a的值8b的值6结果值11|1如:a=15,b=15a的值16b的值16结果值01|0如:a=15,b=14a的值16b的值15结果值00|0如:a=15,b=13

23、a的值16b的值14结果值10|1四、该章的主要例题数:P39例3.1P44例3.2P44例3.3字符:P49例3.5P50例3.6P51例3.7五、该章的主要习题P653.53.63.83.93.103.12六、该章的主要上机内容P39例3.1P44例3.2P44例3.3P51例3.7P653.63.83.10第四章简单的C程序设计(序次程序设计)知识点:1、赋值语句;2、字符数据的输入/输出;3、格式输入/输出语句printf和scanf及其格式控制符;%c、%f、%d(输出宽度、对齐方式、其他格式控制符只作认识)4、程序的结构框架。要点:1赋值语句;2基本输入/输出语句printf和sc

24、anf及其格式控制符%c、%f、%d等的意义。难点:无一、C程序结构C程序源程序言件1预编译命令说明部分源程序言件函数12源程序言件函数n履行部分(语句)n语句的分类P67P681、控制语句条件:ifelse循环:for()循环:while()循环:dowhile()循环结束:continue停止循环或switch:break多分支:switch转向:goto函数返回:return2、函数调用语句printf(“a=%d”;,a)3、表达式语句i=i+1表达式i=I+1;表达式语句函数调用也能够以为是表达式语句4、空语句:一个“;”5、复合语句(用:分程序)x=3;x=x+1;print(“x

25、=%x”,x)二赋值语句变量名=表达式注:是组成序次结构的主要语句。a=b;if(max=x)max=x;三基本输入/输出语句语言自己不供给输入输出语句,输入输出操作是由函数来实现。即:printfputcharscanfgetchar注:(1)这些函数组成一个标准的I/O函数库(放在“stdio.h”中)2)假如要使用C语言库函数,要用预编译命令“#include”将有关“头文件”包含到用户源文件中。#include#include“stdio.h”目前目录目前定义的目录中找寻1printf函数格式输出函数格式:printf(格式控制,输出表列)格式控制:用双引号括起来的字符串,也称为“变换

26、控制字符串”printf的格式字符书P77表41输出表列:需要输出的数据、表达式即:printf(“x=%5.1f,y=%d,z=%c”,x,y,z)d,i带符号十进制形式无符号十进制形式字符形式字符串形式实数(小数)形式说明:1)printf(“y=%-4d”,y)例3-3默认6位小数输出数据左对齐(默以为右对齐)2)数据输出长度的修正;l输出长整型或双精度数据即:printf(“%ld,%lf”,i,y)h输出短型数据即:printf(“%hu”,a)-m.nm最小宽度n小数(实数)-左对齐2putchar函数字符输出函数向终端输出一个字符格式:putchar(变量)putchar(x)p

27、utchar(“n”)输出一个换行符3scanf函数格式输入函数格式:scanf(格式控制,地点表列)格式控制:用双引号括起来的字符串,也称为“变换控制字符串”scanf的格式字符书P80表43地点表列:由若干个地点组成的表列,有:变量地点&x字符串的首地点地点运算符功能:求变量的地点(只好用于变量)&x表示x变量值的内存单元的地点即:scanf(“%d,%4d”,&a,&b)说明:1)不带分开字符的方式,系统将自动按格式说明截取数据例:scanf(“%4d%*3d%f”I,&p);输入:12345678.93时得I=1234,p=8.93“*”作用是“虚读”,跳过相应的数据2)带分开字符的方

28、式(分开字符:空格、tab、回车、逗号)即:scanf(“%d,%d”,&a,&b)4getchar函数字符输入函数从终端输入一个字符格式:getchar()即:c=getchar()函数值是从输入设施获取的字符四、该章的主要例题已知矩形的两边长,求矩形的面积、周长大小写字母相互转变教材P83的例子五、该章的主要习题P844.54.9第五章选择结构程序设计知识点:1、关系、逻辑运算符、逻辑真/假;2、关系表达式、逻辑表达式;3、分支的见解及其算法描绘;4、三种IF分支语句;5、条件运算符;6、SWITCH语句。(认识)要点:1、关系、逻辑运算符、逻辑真/假;2、关系表达式、逻辑表达式;3、三种

29、IF分支语句。难点:1、逻辑真/假;2、关系、逻辑运算优先级。一、关系表达式及逻辑表达式在分支选择结构的作用在程序设计中,表示一些复杂的条件1、关系运算符及关系表达式(第三章)2、逻辑运算符及逻辑表达式(第三章)3、条件运算符(第三章)二分支语句(书P91)从一个条件表达式中,选择语句的履行(用if语句或switch语句来实现)f.t.f表达式表达式t语句语句1语句21If语句(1)C语言供给三种形式的if语句1)if(表达式)语句例:if(xy)printf(“%d”,x注);意“;”地点2)if(表达式)语句1else语句2例:if(xy)printf(“%d”,x);elseprintf

30、(“%d”,y);注意分号“;”if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式n)语句nelse语句n+1例:p92图5.6(2)if()和else后的履行语句能够使用复合语句例5.1、5.2p93if结构将输入的三个数从大到小摆列输出例5.3p95if嵌套结构计算函数值(3)用条件运算符取代if语句例:if(ab)elsey=a;条件运算符能够用:y=(ab)?a:b;例5.4y=b;p98条件运算符取代if结构将输入字符中的大写变换成小写输出2switch语句(认识)switch语句是多分支选择语句表达式语句1语句格式:switch(

31、表达式)2语句3语句4表达式=常量表达式n履行语句ncase常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式3:语句3;break;case常量表达式n:语句n;break;default:语句n+1;例:四级(ABCD)转变成百分制#includemain()chargrade;scanf(%c,&grade);switch(grade)caseA:printf(85100n);break;caseB:printf(7584n);break;caseC:printf(6074n);break;caseD:printf(60n);break;def

32、ault:printf(errorn);例:百分制成绩转变成五级(ABCDE)五级记分5-4-1三、程序举例例5.7p103运费计算(自学)p101例5.6求一元二次方程根(自学)p100例5.5判断某一年是不是闰年(自学)五、该章的主要习题P1045.35.10该章的主要上机内容P91例5.2、P100例5.5,P101例5.6P104习题5.5、5.6、5.9其他:上机实验指导书中内容第六章循环结构程序设计知识点:1、循环的见解及其算法描绘;2、goto循环;3、while循环;要点4、dowhile循环;要点6、for循环;要点难点7、break、continue语句;8、各样循环结构中

33、的履行循环体、判断循环条件的序次;要点9、各样循环结构在一定条件下的转变。要点难点一、循环结构的见解循环语句主要用于:重复履行的操作1C语言在实现循环过程可使用以下语句:a)用goto语句和if语句组成循环c)用dowhile语句b)d)用while语句用for语句2循环可分为二各样类结构:a)“当型”结构b)“直到型”结构语句语句二循环语句1用goto语句和if语句组成的循环(1)goto语句无条件转向语句格式:goto语句标号语句标号:用表记符表示例:gotonext;如:goto123;(不合法)(2)goto和if语句组成循环一般较少使用(不吻合结构化原则)50例:求2nmain()i

34、inti,sum=0;i=1;loop:if(i=50)sum=sum+2*i;i+;gotoloop;printf(“%dn”,sum);2while语句实现“当型”循环结构格式:while(表达式)语句50例:求2nmain()iinti,sum=0;i=1;while(i=50)说明:sum=sum+2*i;i+;printf(“%dn”,sum);语句可为复合语句(用组成)3dowhile语句实现“直到型”循环结构格式:do语句while(表达式);50例:求2nidowhile和while比较p109例6.4main()inti,sum=0;i=1;dosum=sum+2*i;i+;

35、while(i=50);printf(“n”%d,sum);4for语句能够用于循环次数已知和循环次数不确立(能够取代while语句)(应用宽泛,并且使用较活)格式:for(表达式1;表达式2;表达式3)语句过程:表达式1F表达式2T说明:语句表达式1-循环变量赋初值表达式2-循环结束条件表达式3表达式3-循环变量增值即:for(循环变量赋初值,循环结束条件,循环变量增值)语句50例:求2nfor(i=1;i=50;i+)sum=sum+2*i;ifor语句的其他表示(1)用while来表示表达式1while(表达式2)语句表达式3;表达式能够省略,但分号不能够够省略省略表达式1i=1for(

36、;i=50;i+)sum=sum+2*i省略表达式2产生死循环for(i=1;i+)sum=sum+2*i省略表达式3for(i=1;i=50;)sum=sum+2*i;i+;省略表达式1,省略表达式3i=1for(;i=50sum=sum+2*i;i+;i=1;)i+;while(i=50)相当于sum=sum+2*i;(3)表达式1,表达式3能够是:a)简单的表达式b)逗号表达式表达式2:一般是关系表达式或逻辑表达式即:for(sum=0,i=1;i=50;i+,i+)sum=sum+2*i;或:for(sum=0,i=1;i=3)4.p115例6.8判断m是不是素数5.p115例6.9求

37、100-200间的所有素数6.例求随意输入10个数中的最大数6-max四、该章的主要习题P1206.16.15五、该章的主要上机内容P115例6.5、例6.6、例6.7、例6.9P120习题6.4、6.7、6.9、6.11、6.14其他:上机实验指导书中内容作业解答:5-8收益提成:近似所得税第七章数组1、数组的见解及数组的定义;2、在程序设计中的怎样使用数组;3、字符数组是C语言寄存字符串的主要方法,并注意字符串结束标记的规定。要点:数组的组成和特点。一维数组和二维的定义、赋值。字符串与字符数组的关系以及数组在程序中的使用。难点:数组元素存储格式对程序设计的使用。字符串在数组中的组成以及字符

38、串操作语句的使用。基本种类数组种类C语言:数据种类结构种类结构体种类共用体种类指针种类结构种类:是由基本种类按一定规则组成的种类一数组的见解数组:1)是一组有序数据的集合2)这个集合用一个数组名来表示3)数组的元素序号用一个下标值来表示如:a0,a1,a2,a3b11,b12,b21,b22注意:a)数组名后,用方括号;下标从0开始。b)下标值能够是常量表达式常量表达式:包含常量和符号常量(用#define定义的),但不能够够包含变量。语言:不相同意数组进行动向定义。即:intn;scarf(“%d”,&n);intxn;/*定义数组*/c)数组分为:一维、二维等,主要由下标值的多少来确立。二

39、一维数组1定义格式:种类说明符数组名常量表达式种类说明符:表示数组的种类int,short,long,unsigned,float,double,char等数组名:表示各数组元素的一致名字,定义方法和变量名相同常量表达式:表示数组的长度即:inta10注意:C语言不供给数组下标越界的保护,设计时要注意。2数组元素的初始化数组在定义的时候,同时,可对数组元素进行初始化格式:staticinta10=0,0,0,0,0,0,0,0,0,0静态定义a10=0,1,2,3,4,5,6,7,8,9说明:1)static数组不赋初值,系统会对所有数组元素自动赋以0值。即:inta10=0,0,0,0,0,

40、0,0,0,0,0;等价于:staticinta10;2)对所有数组元素赋初值,能够不指定数组长度。即:staticinta=0,1,2,3,4,5;等价于:staticinta6=0,1,2,3,4,5;3)能够部分赋初值即:inta5=1,3;3数组元素的引用语言规定:只好逐一引用数组元素,而不能够够一次引用整个数组。4程序举例书P124例7.2例7.3三二维数组和多维数组1定义格式:种类说明符数组名常量表达式常量表达式种类说明符:表示数组的种类int,short,long,unsigned,float,double,char等数组名:表示各数组元素的一致名字常量表达式:表示数组的长度即:

41、inta56说明:a)每一维的下标从0开始,整个数组元素为:56=30个b)C语言中,二维数组中元素摆列的序次是按行寄存。即:先寄存第一行的元素,再寄存第二行的元素345存储单元3a00a=678对应表:4a011295a02c)能够计算数组元素在数组中的序号6a10假定mn的数组a,7a11计算aij序号的公式:in+j8a12如:a010第二个)如313+1=1(3a202a21a12的序号是:13+2=59a22a2223+2=8d)多维数组的定义格式:种类说明符数组名常量表达式常量表达式常量表达式即:种类说明符数组名长度1长度2长度3inta2342二维数组初始化1)两种基本方法:(a

42、)分行给二维数组赋初值staticinta23=1,2,3,5,6,7(b)所有数据写在一个化括弧内staticinta23=1,2,3,5,6,72)能够对部分元素赋初值staticinta23=1,3即:100300staticinta34=1,3,1,0,0,9即:1000310000903)定义数组时,第一维的长度能够不指定,但第二维的长度要指定(编译系统自动计算)。staticinta3=1,2,3,4,5,6,7,8,9等价于:staticinta33=1,2,3,4,5,6,7,8,9staticinta4=1,3,1,0,0,9等价于:staticinta34=1,3,1,0,

43、0,94程序举例书P128例7.4二维数组队列变换例7.534矩阵求最大元素及队列号四字符数组寄存字符数据的数组;每一个元素寄存一个字符。1定义char数组名常量表达式即:charc10;说明:因为字符与整型是相互通用的,可使用intc10;定义。2字符数组的初始化1)staticcharc5=a,b,c,d,e;注意:staticcharc5=a,b,c;,(错d误,,多一e个,元素f)staticcharc5=a,b(,正确c);后边元素自动定为空格2)staticcharc=a,b,c,d,e;系统自动依据初值个数确立数组长度3字符数组的引用一个字符数组元素,代表一个字符。即:x=c2x

44、的值为“c”4字符串的使用语言中,将字符串作为字符串来办理。规定:一个“字符串结束标记”,以字符0,在碰到字符0时,表示字符串结束。1)使用字符串常量进行数组初始化staticcharc=“Iamhappy”;或等价于staticstaticcharcharc=c=“IamI,happy”;,a,m,h0;,a,p,p,y,注:(a)系统对字符串常量自动加一个0(b)字符数组其实不要求它的最后一个字符为02)数组长度素来保证大于字符串实质长度staticcharc10=“ABCDE”;(第5个元素0,第6个开始为空字符ASC为0)staticcharc10=A,B,C;(,后面D5,个元E素为

45、空字符ASC为0)例7-6P131:字符数组引用例子打印图形(J5_1.C)#defineNLprintf(n)main()chara10=*,*,*,*,*,*,*,*,*,*;inti,j;图案层数for(i=0;i=4;i+)NL;图案前空格for(j=1;j=i;j+)printf();for(j=1;j=str2b)str1必然是数组名,str2能够是数组名或字符串常量c)能够解决字符串常量不能够够赋值给字符数组即:str1=“abcde”str1=str2;(不合法)可用strcpy(str1,str2)注:strcpy(str1,str2,2);是将str2中前面2个字符拷贝到s

46、tr1中去,此后再加一个0。(6)strcmp函数strcmp(str1,str2);功能:把str1与str2的内容进行比较(按ASCII码的大小进行比较)假如:str1=str2,则函数返回0假如:str1str2,则函数返回正整数假如:str1str2,则函数返回负整数(7)strlen函数strlen(str)测试字符串长度,不包含0(8)strlwr函数strlwr(str)将字符串中大写字母换成小写字母(9)strupr函数strupr(str)7程序举例:书将字符串中小写字母换成大写字母P138例7.8例7.9五、该章的主要例题:例7.1、例7.2、例7.3、例7.4、例7.5、

47、例7.6、例7.8、例7.9六、主要习题:7.1、*7.2、7.3、7.5、7.6、*7.9、7.11、*7.13七、主要上机内容:例7.2、例7.3、例7.4、例7.5、例7.7、例7.8、7.1、7.3、*7.9、7.11其他:上机实验指导书中内容第八章函数与程序结构1、函数的一般见解:函数形参、实参、返回值,函数的种类;2、动向存储变量与静态存储变量3、变量的生计期与作用域要点:函数的定义和调用及使用函数的特点。函数间的参数传达(值传达和地点传达)。变量存储作用域、编译预办理的使用。难点:函数参数传达(数值、地点)及形参、实参的使用;变量存储作用域及自动变量与静态变量的差别。一、函数概括

48、一个较大的程序:可由若干程序模块组成,每一模块用来实现一个特定的功能。用子程序可实现该模块功能。在C语言中:子程序称为:子函数在C程序中:可由一个主函数和若干个函数组成。分为标准库函数和用户自定义函数函数的作用:减少重复编写程序段的工作量。语句语句功能调用功能标准库函数:语句由C语言开初编写的一系列常用函数(系统供给)语句功能TurboC的标准库包调含用400多个常用函数用户自定义函数:语句语句一般自定义函数和自定义函数库(用户先已编好的)二、函数定义(子函数的设计)1函数定义格式:种类定义符函数名(形式参数表列)函数体说明:1)种类定义符:函数返回值的数据种类int,char,float,d

49、ouble默认int函数无数据返回,使用void作种类定义符2)函数名:函数的名称(用户取的:合法的表记符)3)形式参数表列:函数调用时传达信息的通道有两种表示方法:a)(参数说明形式参数)传统风格b)(形式参数)参数说明例:floatadd(floatx,floaty)x=x+y;return(x);floatadd(x,y)floatx,y;x=x+y;return(x);a).b)2函数的返回值一般经过函数中的return语句获取。假如不需要返回值,能够不要return语句。为了明确表示“不带回值”,能够用“void”定义“无种类”例:main()/*(打印平方表)*/voidprin(

50、intx);inti;for(i=1;ib)c=1;elseif(a=b)c=0;elsec=-1;return(c);运转结果:0说明:(1)应防备这类状况的产生,可写为:自左而右序次自右而左序次j=i;j=+i;k=+i;p=f(j,j);p=f(j,k);(2)在printf(“%d,%d”,i,i+);中相同存在当:i=3;结果为:4,32函数调用的几种方式(1)函数语句把函数调用作为一个语句,即单唯一个语句行。不要求函数带回值,只需求函数完成一定操作。即:printstar();(2)函数表达式函数出现在一个表达式中,要求函数带回一个确定的值以参加表达式的运算。即:c=2*max(a

51、,b);(3)函数参数函数调用作为一个函数的实参;即:m=max(a,max(b,c));3函数说明作用:在函数使用前对函数的特点进行说明的语句。(用户自定义函数)对已定义的函数的返回值进行种类说明。告诉系统在本函数中将要用到的函数是什么种类。C语言规定:以下几种状况能够不使用函数说明a)函数的值(函数的返回值)是整型或字符型(系统自动按整说明)假如函数定义在调用函数以前,能够不用加以说明在函数说明和函数定义中:)种类定义、函数名要相同)形式参数表记符能够不相同如:main()doubleabc(intx,floaty);/*函数说明*/-doubleabc(inta,floatb)/*函数定

52、义a,b与x,y不相同*/函数体非int形参的函数必然在调用前进行函数说明P148例8.3、8.5不使用函数说明例子例:main()floatabc(floatx,floaty)intsum,a=2,b=5;sum=add(a,b);x=x+y;return(x);定义main()intadd(intx,inty)floatsum,a=2.0,b=5.0;x=x+y;定义sum=abc(a,b);return(x);语句说明:使用库函数,一般在文件开头用#include命令即:#include“math.h”main()a=sqrt(x)4函数的嵌套调用1)C语言函数不能够够嵌套定义即:函数定

53、义函数定义函数定义1函数定义2各个函数定义是相互平行的函数定义32)C函数允在调用一个函main()a函数b函数调用另一个函调用b函数示例:调用a函数*五、递归调用返回结束返回用自己的过程递归:由停止条件两部即:一以分为:第一“递推”许嵌套调用,即数的过程中,又数。一个函数自己调递归方式与递归分组成个递归的问题可“回推”,此后在递归过程中,必然拥有一个结束递归过程的条件。例:N!1(N=0,1)递归公式=N*(N-1)!(N1)子函数定义求:4!longfac(intn)sum=fac(4);结束条件longfa;if(n=0)fa=1elsefa=n*fac(n-1);return(fa);

54、第一步fac(4)fa=4*fac(4-1)=4*fac(3)fa=4*3*2*1*1第二步fac(3)fa=3*fac(3-1)=3*fac(2)fa=3*2*1*1第三步fac(2)fa=2*fac(2-1)=2*fac(1)fa=2*1*1第四步fac(1)fa=1*fac(1-1)=1*fac(0)fa=1*1第五步fac(0)fa=1回推递推六、函数参数的使用(实参或形参)实参:在调用函数中;形参:在函数定义中函数参数:1)数值2)变量3)数组元素4)数组名5)指针1函数间的参数传达(1)数值传达方式实参地点形参地点调用函数的实参:给出详细数据主假如:1)数值2)变量3)数组元素(2

55、)地点传达方式实参地点形参地点主假如:调用函数实参:一般是数组名或指针变量2数组有两种参数:a)数组元素:一个数组元素相当于一个变量,因此,数组元素能够用于函数参数,用法与变量相同。是传达数据方式b)数组名:数组名作为一个变量用于函数实参和形参,传达的是整个数组元素或部分数据元素。是传达地点方式(1)数组元素作实参的传值调用把数组元素看作变量来作为实参使用传值调用最多返回一个值例:main()inta5;a0=mul(a1,a4);intmul(intx,inty)ints;return(s);调用函数函数定义(2)数组名作函数参数(实参加形参都用数组名)拥有:存贮地点作实参的传址调用例:(J

56、5_3.C)main()voidswap(floatx2);floata2=10.5,2.7;printf(%4.1ft,%4.1fn,a0,a1);swap(a);printf(%4.1ft,%4.1fn,a0,a1);voidswap(floatx2)相当于:floatt;floatx2;t=x0;x0=x1;x1=t;voidswap(x)说明:a)数组名在主调函数和被调函数中,分别进行定义,并且b)调用的实质:种类一致。数组a独享存贮区10527数组a和数组共享存贮区27105x数组a独享存贮区27105c)实参数组和形参数组大小能够不一致(C语言编译时,对形参数组大小不作检查,但是将

57、实参数组的首地点传给形参数组,这样两个数组共同占用同一段内存单元)例(J5_4.C)main()voidfun(floatx4);floata4=3.5,6.1,0.2,7.9;inti;a0a1a2a3fun(&a1);第2个的开始连续3个地点for(i=0;i=3;i+)3.56.10.27.9printf(%5.1ft,ai);x0 x1x2voidfun(floatx4)共用内存单元x0=x0+1;x1=x1+1;x2=x2+1;结果:3.57.11.28.9数组a和数组x数组a独享存贮区共享存贮区数组a独享存贮区a035a171a035a161a212a171a202a389a212

58、a379a389注意:不要使用x3,即:x2是子程序最后一个可用元素。(3)例子书P164例8.10例8.11例8.12书P166例8.13(4)二维数组作函数参数二维数组的传值调用与一维数组相像。例:main()inta35;mul(n,a12,a04);intmul(intx,inty,intz)ints;例(j5_8.c)main()调用函数函数定义inttran(intn,intx);inttotal,a44=3,8,9,10,2,5,-3,5,7,0,-1,4,2,4,6,0;tran(2,a);第一行的第0列地点9个tran(2,&a0);第一行的第0列地点9个tran(0,&a2

59、);第二行的第0列地点4个tran(intn,intarr)计算数组元素在数组中的序号inti;for(i=0;i4;i+)printf(%d,arrn*4+i);printf(n);程序输出:7,0,-1,4,0,-1,4,0,-1,4,七、局部变量和全局变量1变量存储作用域(1)作用域:决定一个变量的有效范围。a)作用域是整个程序的变量为全局变量b)作用域只限于程序的一部分的变量为局部变量局部变量:在一个函数内部定义的变量(内部变量),它只在本函数范围内有效。全局变量:在函数以外定义的变量称为外面变量,外面变量是全局变量(2)有效范围为:从定义变量的地点开始到根源文件结束。书P169外面变

60、量在文件开头定义,则在整个文件范围内都能够使用该外面变量。书P170(3)作用:增添函数间数据联系的渠道。同一个文件中的所有函数都能引用全局变量的值书P170例8.15八、变量的存储种类用来规定变量的作用域以及它们存在的长短2变量的存储种类变量存在的长短:决定一个变量存在的范围(整个程序,部分函数)从变量存在的时间(即生计期)角度来分,有静态存储变量和动向存储变量静态存储方式:指在程序运转时期分派固定的存储空间的方式动向存储方式:指在程序运转时期依据需要进行动向的分派存储空间的方式供用户使用的存储空间:程序区三个部分静态存储区动向存储区静态存储区:主要放全局变量即:在程序开始履行时给全局变量分

温馨提示

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

评论

0/150

提交评论