C程序设计[第三版]谭浩强.ppt
《C程序设计[第三版]谭浩强.ppt》由会员分享,可在线阅读,更多相关《C程序设计[第三版]谭浩强.ppt(431页珍藏版)》请在三一办公上搜索。
1、C 程序设计设计,授课教师:刘 东,第一章 C语言概述,本章要点:第一节:C语言出现的历史背景(阅读)第二节:C语言的特点(了解)第三节:简单的C程序介绍(理解)第四节:C程序的上机步骤(掌握),第一章 C语言概述,考 试 内 容一、C语言的结构1.程序的构成,MAIN函数和其他函数。2.头文件,数据说明,函数的开始和结束标志。3.源程序的书写格式。4.C语言的风格。分析:这部分考试形式主要是选择题,一般会出12个题,都是基本概念。注意程序的书写格式。,第一节:C语言出现的历史背景,一、语言的发展 第一阶段:机器语言 第二阶段:汇编语言 第三阶段:面向过程的高级语言 有人把C称为“高级语言中的
2、低级语言”或“中级语言”,意为兼有高级和低级语言的特点。二、C语言的发展 ALGOL 60CPLBCPLBC,C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL 语言。CPL语言在ALGOL 60的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin Richards对CPL语言做了简化,推出了BCPL 语言。1970年美国贝尔实验室的K
3、en Thompson 以BCPL语言为基础,,又做了进一步简化,设计出了很简单的而且很接近硬件的B语言(取BCPL的第一个字母),并用B语言写了第一个UNIX操作系统但B语言过于简单,功能有限。1972年至1973年间,贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言(取BCPL的第二个字母)。C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)。最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C改写,即UNIX第5版
4、。,第二节 C语言的特点,一、C语言是一种结构化、模块化的语言二、C语言具有丰富的运算符及数据结构三、C语言区分大小写:1、小写字母作为基本书写形式 2、符号常数等宏定义的参数名采用大写四、C语言源程序书写灵活五、C语言生成的目标代码质量高六、C语言编写的程序可移植性好(比汇编语言),第三节 简单的C程序介绍,一、几个基本函数 1.main().2.printf(格式控制,输出列表)3.scanf(格式控制,输入地址列表)二、程序举例 例1:main()printf(“I am a student.n”);,总结:,1、本程序的作用是输出一行信息2、每一个C程序都必须有一个main函数,3、C
5、程序的函数体由一对花括号括起来4、C程序的每一行叫做一个语句行5、每一语句后必须有一分号6、“n”是换行符7、本程序的输出通过一个C的库函数printf()实现,例2:main()/*求两数之和*/int value1,value2,sum;/*定义变量*/value1=50;value2=25;sum=value1+value2;printf(“The sum of%d and%d is%dn”,value1,value2,sum);,总结:1、该程序完成的功能是求两个给定数的和,并输出值。2、/*/之间的是注释部分,不影响程序的执行3、C语言中使用变量必须先定义,后使用4、%后面的是格式字
6、符串,指定输入输出的格式,例3:main()float average();float a,b,c,ave;scanf(“%f,%f,%f”,总结:1、本程序包括两个函数,主调函数和被调函数。2、scanf()为输入函数3、&为取地址运算符4、return()函数为返回语句,将被调函数计算出来的值带回主调函数。,二、C语言源程序的构成1、C语言是一种函数语言,每个程序至少包含一个函数 main()2、C语言的源程序总是从main函数开始执行的3、C语言的语句以分号作为分隔符,分号不可少(1)C语言的一行可以写几条语句,每条语句以分号分隔(2)C语言的一条语句可以写多行,以分号作为结束标志4、C
7、语言的输入输出靠函数实现5、每条C语句可以为其加注释,6、一个C函数的一般形式为:,函数类型 函数名(函数形参)形参类型定义 数据定义部分 函数执行部分,函数的说明部分(首部),如:int max(int x,int y)或 int max(x,y)int x,y;,如:limit(),第四节 C程序的上机步骤,C语言的源程序必须在某个编译器(编辑环境Turbo C 2.0)下,才能被翻译为机器所能执行的目标代码。一、上机过程(图1.1)1、编辑:输入源程序,校正拼写及语法错误2、编译:翻译源程序为目标代码(.obj)3、链接:将各个模块连接到一起,形成可执行程序文件(.exe)4、执行:执行
8、程序,二、上机步骤1、在DOS环境下,进入TC子目录,键入命令TC 如:C:cd tc C:TCtc2、在编辑窗口中,输入源程序,并进行检查3、用ALT+C激活Compile菜单,选择“Compile to OBJ”4、用ALT+C激活Compile菜单,选择“Link to EXE”5、用ALT+R激活RUN菜单,选择Run命令6、用ALT+R激活RUN菜单,选择User screen命令,注:,1、可用F9功能键一次性进行编译和连接 CTRL+F9执行程序 ALT+F5查看运行结果2、可用F10激活RUN菜单,选择RUN命令3、若在编译或链接过程中出现错误,可用F10激活菜单,用光标键移到
9、Edit菜单,继续进行编辑修改4、若要使用以前的旧文件,可使用ALT+F,打开file菜单,选择Load命令,调出所需文件。5、若当前源程序已操作完毕,需要输入下一个程序时,应使用ALT+F打开文件菜单,选择NEW命令,生成一个新文件,第二章 算 法,本章要点:1、了解什么是算法;为什么要使用算法;2、了解几种简单常见的算法3、了解算法的基本性质4、掌握算法的表示方法(重点掌握流程图)5、了解结构化程序设计的基本方法(阅读),第一节 算法的概念,一、程序:算法+数据结构=程序 1、算法:为解决一个问题而采取的方法和步骤。2、数据:程序操作对象算法+数据结构+程序设计方法+语言工具和环境=程序二
10、、程序设计的全过程:分析问题划分模块建立模型选择数据结构和算法描述算法(例如画出流程图)编程序上机调试程序分析运行结果整理结果写出程序说明书等文档。三、说明 1、对同一问题,有不同的算法;算法有优劣之分 2、计算机算法分为数值算法和非数值算法,第二节 算法举例1、有两盘磁带,A录英语,B录音乐,把它们交换过来,解:第一步:先将A磁带中的英语转录到C磁带上 第二步:再将B磁带中的音乐转录到A磁带上 第三步:最后交C磁带中的英语转录到B磁带上,2、把三个任意数按大小顺序排列,解:该问题的思路是把大数放在a中,把次大的数放在b中,把小数放在c中,再把这个思路进一步细化,即有下面算法:,第一步:输入a
11、,b,c 三个数 第二步:将a和b比较,较大者放在a中,小者放在b中 第三步:将a和c比较,较大者放在a中,小者放在c中 第四步:将b和c比较,较大者放在b中,小者放在c中 第五步:输出排列好的a,b,c三个数,3、求5!,解题思路:设两个变量,一个代表被乘数,一个代表乘数。将每一次乘积放在被乘数中。,算法设计:S1:使P=1S2:使i=2S3:使P*I,乘积仍放在P变量中,表示为p*I=pS4:使i的值加1,即i+1=iS5:如果i不大于5,返回重新执行步骤S3及其后的S4、S5;否则算法结束。,4、有50个学生,要求将他们之中成绩在80分以上者打印出来。,用n表示学生学号,n1代表第一个学
12、生学号,ni代表第i个学生的学号。用g代表学生成绩,gi代表第i个学生成绩,算法可表示如下:S1:i=1;S2:如果gi=80,则打印ni和gi,否则不打印S3:i=i+1;S4:如果i=50,返回S2,继续执行;否则,算法结束,5、判定20002500年中的每一年是否闰年,将结果输出闰年的条件是:(1)能被4整除,但不能被100整除的年份都是闰年;(2)能被100整除,又能被400整除的年份是闰年。不符合这两个条件的年份都不是闰年。,算法如下:设y为被检测的年份S1:y=2000S2:若y不能被4整除,则输出y“不是闰年”。然后转到S6S3:若y能被4整除,不能被100整除,则输出y“是闰年
13、”。然后 转到S6S4:若y能被100整除,又能被400整除,则输出y“是闰年”。否则输出y“不是闰年”,然后转到S6S5:输出y“不是闰年”S6:y=y+1S7:当y2500,算法停止。,6、求1-1/2+1/3+1/33+1/99-1/100,算法如下:S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno=100,返回执行S4;否则算法结束,7、对于一个大于或等于3的正整数,判断它是不是一个素数,判断一个正整数n是否为素数的方法:将 n作为被
14、除数,将2到n的平方根各个整数轮流作为除数,如果都不能整除,则n为素数。,算法:S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5S5:i=i+1S6:如果i=sqrt(n),返回S3;否则打印n“是素数”,然后结束。,三、算法设计1、判断一个数能否被3和5整除2、求两个正整数m和n的最大公约数,第三节 算法的性质,1、有穷性:步骤有限;范围合理2、确定性:算法含义确定,无歧义3、有零个或多个输入4、有一个或多个输出5、有效性:算法中的每一步都能有效执行,并得到确定结果,第四节 算法的表示,一、用自
15、然语言表述二、用流程图表示三、用N-S流程图表示四、用伪代码表示五、用计算机语言表示,如:求三个数的最大值,1、自然语言描述法 先将两个数a和b进行比较,找出其最大者,然后再把它和第三个数c进行比较,如果它比第三个数大,则它就是最大数,否则第三个数c就是最大数。2、伪码表示法 if ab then 把a交给max else 把b交给max if maxc then 输出最大值max else 输出最大值c,3、NS图表示法,4、流程图表示法,流程线,连接点,注释框,流程图表示法常用图例,Y,Y,N,N,5、计算机语言描述 main()int a,b,c,max;scanf(“%d,%d,%d”
16、,第三章 数据类型、运算符与表达式,本章要点:(本章内容全部要求掌握)1、常量与变量2、整型、实型、字符型数据3、变量赋初值的几种方法4、不同类型的数值型数据的混合运算5、算术运算符和算术表达式6、赋值运算符和赋值表达式7、逗号运算符和逗号表达式,考 试 内 容二、数据类型及其运算 1.C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。分析:这部分考试形式主要是选择题,一般会出4-5个选择题和2-3个填空题
17、。变量主要搞清楚全局变量(extern)和局部变量(在一个函数中或在一个模块中)。运算符要注意是左结合或右结合,3种逻辑运算符:!(逻辑非)、&(逻辑与)和|(逻辑或),位运算:&、|和的运算。另外,条件表达式和逗号表达式也是常考题型。,第一节 C的数据类型,C语言提供的数据结构是以数据类型出现的,如下:,C语言数据有常量和变量之分,它们都属于以上数据类型。,一、常量:在程序运行过程中,值不变的量。1、直接常量:即常数。如 1、2、3.5、a。可以分为实 型、整型、字符型。其特点是从字面上即可判定它 们是某一 类型的常量。也称“字面常量”2、符号常量:在一个程序中指定用一个符号代表一个 常量。
18、符号常量用#define命令定义。符号常量一经 定义其值在其作用域内不能改变。习惯上用大写。如在程序的开头有如下定义:#define PI 3.1415926 则在整个程序中可用“PI”代替3.1415926进行运算,第二节 常量与变量,例:符号常量的使用#define PI 3.1415926#define R 2.0main()double ar(double r),cir(double r);printf(“area=%f”,ar(R);printf(“tcircum=%f”,cir(R);double ar(double r)return(PI*r*r)double cir(doubl
19、e r)return(2.0*PI*r),同是常量,符号常量比一般常量在程序设计中有何优势:,#define PRICE 30main()int num,t;num=10;t=num*PRICE;printf(“total=%d”,t);,(1)含义清楚(2)一改全改,二、变量:在程序运行的过程中,值可以改变的量。标识符:某种对象的名字或标记。1、变量名:变量名只能由字母、数字和下划线组成,且第一个字 符必须为字母和下划线。如下是合法的变量名:sum、i、student_name、_1_2_3、_above、DAY 如下是不合法的变量名:M.D.john,$123,#33,3d64,ab注意:
20、1.大写字母和小写字母被认为是两种不同的字符。2.标识符的长度为8位,超过8位只有前8位有效(Turbo C 则允许32个字符)。3.尽量做到见名知意;如:SUM和sum为两个不同的变量。student_name和student_number为两个相同的变量。,3、变量值:变量定义后,为其分配存储空间,存放的是变量的值。int a;a=56;,2、变量定义:变量声明的一般形式:;如:int sum,i;,4、变量的使用:先定义,后使用。原因:(1)保证变量正确使用:未被定义的变量不能使用(2)不同类型的变量占用的内存空间不同(3)不同类型的变量对应取值的范围不同(4)不同类型的变量对应不同的一
21、组操作如:定义变量“student”,如果在使用时,误写为“stdent”,不能使用;整数占两个字节,实数占四个字节,字符占一个字节;整数范围为-3276832767之间;实数为10-381038;字符为0255;整数有“求余”(%)运算,实型数据没有。,第三节 整型数据,一、整型常量:有三种表示形式1、十进制数形式:1、98、3452、八进制数形式:以0 开头的数字。01、076 7*81+6*80=(62)103、十六进制数形式:以0 x开头的数字。0 x3F、0 x765 7*162+6*161+5*160二、整型变量:1、存储形式:数值以补码形式表示,占两个字节 见教材P41图3.2、
22、3.3所示,位、字节、字及字长,数据存储的组织形式,存储单元地址,0000H0001H0002HFFFFH,存储单元(字节),存储体,存储体结构图,2、整型变量的分类1)有符号基本整型:以signed int表示,占两个字节,表示范围-32768327672)无符号基本整型:以unsigned int 表示,表示范围0655353)有符号短整型:以signed short int 表示,一般也占2个字节,要求不长于int型,表示范围-3276832767。4)无符号短整型:以 unsigned short int表示,表示范围0655355)有符号长整型:以 signed long int 表
23、示,一般占4个字节,要求不小于int型,表示范围:-231(231 1)6)无符号长整型:以unsigned long int表示 表示范围:0(232 1),3、整型变量的定义:1、在程序中引用一个变量,实际上是对指定的存储空间的引用。因此必须先开辟存储空间才能引用它,即在引用变量之前必须先定义变量的类型,在编译时就会根据指定的类型为其分配一定的存储空间,并决定数据的存储方式和允许操作的方式 2、变量的定义一般在函数的开头部分;也可以在其它位置,但定义的位置影响变量的作用范围。,例1:int a,b unsigned short c,d;long e,f;,例2:main()int a,b,
24、c,d;unsigned int u;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d”,c,d);,运行结果:a+u=22,b+u=-14,不同种类的整型数据可以进行算术运算,4、整型数据的溢出,例:main()int a,b;a=32767;b=a+1;printf(“%d,%d”,a,b);,32767,-32768,例:main()int a,b;a=-32768;b=a-1;printf(“%d,%d”,a,b);,-32768,32767,整型常量的类型:整型常量赋值给整型变量时的注意事项 1、如果一个整型常量在-327683276
25、7之间,可以赋给int 型 和变量long int型变量。2、如果一个整型常量在-2 31231-1之间,可以赋给long int型变量 3、常量中没有无符号型,但非负常量可以赋给无符号变量 如:int unsigned int 123 unsigned int 65330 long int long int,第四节 实型数据,一、实型常量:实数又称为浮点数,有两种表示形式 1、十进制小数形式:由数字和小数点组成(必须有小数点)如:89.0、456.、0.456、0.0、2、指数形式:即科学计数法。如:45e2相当于45*102、34e-5相当于34*10-5。字母e(E)前必须有数字,字母e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三版 程序设计 第三 谭浩强

链接地址:https://www.31ppt.com/p-6503604.html