C语言程序设计课件完整版课件.ppt
《C语言程序设计课件完整版课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件完整版课件.ppt(175页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计主讲人:汪洋主讲人:汪洋在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确第一章 C语言概述&C语言的发展与特点&C语言的基本程序结构&C语言程序的开发过程&C语言的基本词法&算法在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.1 C语言出现的历史背景l汇编语言依赖于计算机硬件,程序的可读性和可移植性差;l一般高级语言难以实现汇编语言的某些功能如对内存地址的操作、位操作等。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,
2、所提出的问题也很明确1.2 C语言的发展史l1960年 ALGOL 60;l1963年 英国剑桥大学提出CPL语言;l1967年 Matin Richards提出BCPL语言;l1970年 Ken Thompson提出B语言;l1972-1973 Dennis.M.Ritchie提出C语言;lBrian W.Kernighan 和D.M.Ritchie介绍标准C;l1987年美国国家标准化协会提出ANSI C。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.3 C语言的特点l简洁、紧凑,使用方便、灵活;l允许直接访问地址,能进行位
3、操作;l运算符丰富;l数据类型丰富;l结构化程序语言,便于实现程序的模块化;l程序执行效率高,可移植性好。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.4 C语言的基本程序结构lC程序是由函数构成的,每个C程序有且只有一个主函数(main),可包含若干其他函数;l每个函数由首部与函数体组成;首部包括函数类型、函数名、函数参数(形参)、参数类型,int max(int x,int y)函数体包括声明部分和执行部分。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确lmain
4、函数位置任意,但总是从main函数开始执行,在main函数中结束;lC程序书写自由,每个语句后需加一个分号;l主函数可调用任何非主函数,非主函数之间可互相调用,但不能调用主函数;lC语言本身没有输入输出语句;l用/*/进行注释。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.5 C语言程序的开发过程l编辑l编译l链接 计算机只能识别和执行由0和1组成的二进制的指令,为了使计算机能执行高级语言源程序,必须先用“编译程序”把源程序翻译成二进制形式的“目标程序”,然后将该目标程序与系统的函数库和其他目标程序连接成为可执行的目标程序。在整
5、堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.6 C语言的基本词法l字符集:包括大小写英文字母52个、数字10个、键盘符号33个、转义字符。l标识符:是用户自定义的一组字符序列,用来表示程序中需要辨认的对象名称,如符号常量、变量、数组、函数。规定:n 标识符是由字母或下划线开头的字母、数字、下划线组成的一串符号,最长不能超过32个字符;n大小写字母有区别,大写字母只用来定义宏名,其他都采用小写字母表示。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确l保留字:32个,有特殊
6、含义,主要用于构成语句,进行存储类型和数据类型的定义,不允许用户作为自定义标识符使用;l词类:常量、变量、运算符、函数、表达示、保留字;l语句:完成特定的操作,语句的有机组合序列完成指定的功能;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确语句的种类l赋值语句;l函数调用语句;l表达式语句;l流程控制语句;l复合语句;l空语句;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.7 算法著名计算机科学家沃思提出公式:程序=数据结构+算法v数据结构:对数据的描述即指定数据的类
7、型和数据的组织形式;v算法:对操作的描述即操作步骤。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.7.1 简单算法举例判定2000-2500年中的每一年是否闰年。设定y为被检测的年份。算法如下:lS1:2000=ylS2:若y不能被4整除,则输出y“不是闰年”,然后转至S6lS3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转至S6lS4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出y“不是闰年”,然后转至S6lS5:输出y“不是闰年”lS6:y+1=ylS7:当y2500,算法停止;在整堂课的
8、教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.7.2 算法的特点l有穷性;l确定性;l有零个或多个输入;l有一个或多个输出;l有效性在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.7.3 算法的表示l用流程图表示算法;l用伪代码表示算法;l用计算机语言表示算法。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确第二章 C语言的数据类型、运算符与表达式&C语言的数据类型;&C语言的运算符与表达式;在整堂课的教学中,刘教师
9、总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.1 C语言的数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型(void)整型整型(int)字符型字符型(char)实型(浮点型)实型(浮点型)数组类型数组类型结构体类型结构体类型(struct)共用体类型(联合类型)共用体类型(联合类型)(union)枚举类型枚举类型单精度型单精度型(float)双精类型双精类型(double)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2 常量 在程序运行过程中,其值不
10、能被改变的量称为常量。C语言中规定的常量类型有以下五种:整型常量、实型常量、字符常量、字符串常量和符号常量。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2.1 整型常量 1.整型常量的表示方法:l十进制整数:无前缀,数码取值为09,如123,-456。l八进制整数:前缀为0,数码取值为07,如0123,-011。八进制数与十进制数的转换方法如下:(0123)8=1*82+2*81+3*80=64+16+3=(83)10在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确l
11、十六进制整数:前缀0X或0 x,数码取值为09,AF或af,如0 x2A,-0 x12。十六进制数与十进制数转换方法:(-0 x12)16=-(1*161+2*160)=-(16+2)=(-18)102.整型常量的后缀:l加后缀L或l,表示长整型数。l加后缀u,表示无符号数。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2.2 实型常量n实型常量即实数又称为浮点数,C语言中实数只采用十进制,有两种表示形式:l小数形式:由数码09和小数点组成(注意必须有小数点),如.123,-123.4567;l指数形式:由十进制数,加阶码标志“
12、e”或“E”以及阶码(只能为整数),如 -2.1e2,2.1e-2。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2.3 字符常量C语言中,字符常量是用单引号括起来的单个字符,如a,$等。转义字符是一种特殊形式的字符常量,它是以一个“”开头的字符序列。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确表表2.12.1转义字符及其含义转义字符及其含义字符形式含义n换行,将当前位置移到下一行开头t水平制表(跳到下一个tab位置)b退格,将当前位置移到前一列r回车,将当前位置移
13、到本行开头f换页,将当前位置移到下页开头反斜杠字符“”单引号字符”双引号字符ddd1到3位8进制数所代表的ASC字符xhh1到2位16进制数所代表的ASC 字符在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例2.1转义字符的使用main()printf(“abctderftgn”);printf(“htibbjk”);在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例2.1结果 程序运行后在打印机上得到以下结果:fabcgdehjik 注意在显示屏上最后看到结果以与上述打印
14、结果不同,是:fgdehjk在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2.4 字符串常量 C语言中,字符串变量是由一对双引号括起来的字符序列,如“China”,“$3.232”。注意:不要将字符常量与字符串常量混淆。注意:不要将字符常量与字符串常量混淆。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确字符常量与字符串常量的区别l字符常量是由单引号括起来的,字符串常量是由双引号括起来的;l字符常量只能是单个字符,字符串常量则可是零个或多个字符;l可把一个字符常量赋予一
15、个字符变量,但不能把一个字符串变量赋予一个字符变量,C语言中没有相应的字符串变量,可用字符数组来存放字符串常量;l字符常量占一个字节的内存,字符串常量占的内存字节数等于字符串中字节数加1,最后一个字节存放字符0作为字符串结束标志。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.2.5 符号常量 C语言中,可用一个标识符来表示一个常量,称为符号常量又称为宏定义,使用前须先定义,其定义规则为:#define 标识符 常量在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例2.2
16、 符号常量的使用#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);使用符号常量的好处:使用符号常量的好处:含义清楚;含义清楚;在需要改变一个常量在需要改变一个常量时能做到时能做到“一改全改一改全改”;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.3 变量 变量是指在程序运行中其值是变化的量。一个变量应该有一个变量名,在内存中占据一定的存储单元,在该存储单元中存放变量的值。3变量值变量值a变量名变量名存储单元存储单
17、元图图2.1在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确语言中,要求对变量作强制定义,即“先定义,后使用”。l便于发现错误;l为每一个变量指定确定类型,在编译时就能为其分配相应的存储单元。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确整型数据在内存中的存储方式 整型数据在内存中是以二进制形式存放的。若定义了一个整型变量i:int i=10;图3.2(a)是数据存放的示意图,图3.2(b)是数据在内存中实际存放的情况;i10(a)i0 0 0 0 0 0 0 0 0 0
18、0 0 1 0 1 0(b)图图2.2在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确 实际上,整型数值是以补码表示的。一个正数的补码与其原码相同,求负数的补码方法:将该数的绝对值的二进制形式按位取反再加1。例如求-10的补码:0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 01 1 1 1 1 1 1 1 1 1 1 1 0 1 0 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 010的原码的原码取反取反再加再加1得得-10的的补码补码在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定
19、的梯度,由浅入深,所提出的问题也很明确.3.1 整型变量l有符号基本整型signed intl有符号短整型 signed short intl有符号长整型 signed long intl无符号基本型 unsigned intl无符号短整型 unsigned short intl无符号长整形 unsigned long int.整型变量的分类:在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确类型说明符数的取值范围字节数signed int-3276832767 即-215(215-1)2unsigned int065535 即 0(2
20、16-1)2signed short int-3276832767 即-215(215-1)2unsigned short int065535 即 0(216-1)2signed long int-21474836482147483647 即-231(231-1)4unsigned long int04294967295 即 0(232-1)4表表2.1整型数据的所占的内存字节数与取值范围整型数据的所占的内存字节数与取值范围在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.整型变量的说明 类型说明符 变量名标识符,变量名标识符,.;
21、如:int a,b,c;unsigned short x,y;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例2.3 整型变量的定义和运算见教材P34例2.3在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.3.2 实型变量l单精度型 float 占4个字节内存,提供7位有效数字,l双精度型 double 占8个字节内存,提供16位有效数字。整数没有误差,实数有精度,有误差,提供6位小数,7位有效数字。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定
22、的梯度,由浅入深,所提出的问题也很明确2.实型变量的说明格式和书写规则同整型变量说明相同,如:float s,t;double h,k;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例例2.4实型数据的舍入误差实型数据的舍入误差main()float a,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);结果:结果:12345678848.000000,12345678848.000000在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确
23、误差原因分析误差原因分析 b的理论值应是12345678920,而一个实型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确表示该数,从结果看出,把20加在后几位上,是无意义的,应当避免将一个很大的数与一个很小的数直接相加减,否则就会“丢失”小的数。与此类似,用程序计算1.0/3*3的结果并不等于1。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.3.3 字符变量 字符变量用来存放字符常量,只能存放一个字符,占用1个字节内存。字符变量定义如下:char c1,c2;在整堂课的教学中,刘教师总是让学生带着问题来学习
24、,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确l1.字符数据在内存中的存储字符数据在内存中的存储 将一个字符常量放到一个字符变量中,不是把该字符本身放到内存单元中,而是将该字符的相应的ASC 代码存放在存储单元中,如字符a的ASC 代码为97,b为98,9798c1c20 1 1 0 0 0 0 10 1 1 0 0 0 1 0c1c1图图2.3在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确 在内存中,字符数据以ASC码存储,它的存储形式与整数存储形式类似,C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型量。在
25、输出时,允许把字符变量按整型量输出,也允许把整型变量按字符型量输出。注意:当整形变量按字符型量处理时,只有低八位参与处理。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例2.5 向字符型变量赋以整型值main()char c1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2);结果:a,b97,98在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2.补充补充 Turbo C将字符变量中的最高位作为符号位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 完整版
限制150内