谭浩强C语言程序设计ppt课件.ppt
《谭浩强C语言程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《谭浩强C语言程序设计ppt课件.ppt(329页珍藏版)》请在三一办公上搜索。
1、主讲教师:刘 丹,C程序设计,C语言程序设计,第一章第二章第三章第四章,第五章第六章第七章,第一章 C语言概述,C语言 既可作为系统软件的程序设计语言,又可作为应用软件的程序设计语言。,尤其是当今计算机应用极为广泛,软件的设计、编写质量要求高,经常与硬件部分打交道,如:界面设计等,所以用C语言编写是最理想的。因而C语言也是当前计算机语言中用得最广泛的语言之一。, 1.1 C语言出现的历史背景,一、操作系统的设计语言,O.S. 操作系统,为用户使用计算机提供一个操作环境:系统命令、语言编程等。,如:DOS. UNIX,以前:O. S .软件用汇编指令编写。汇编语言:一种二进制指令代码的符号表示,
2、既繁琐,又易出错,可读性差。,改进:用C语言编写,既提高了程序的可读性,又可与硬件打交道。,二、发展过程, 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language), 1967年,Matin Richards对CPL进行改进、简化、推出了BCPL (Basic Combined Programming Language), 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。, 美国贝尔实验室D.M. Ritchie 在B语言基础
3、上设计出了C语言,并用其将UNIX系统全部改写并实现。, 经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。, 1978年,美国Brain W.Kernighan与Dennis. M. Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。, 1983年,美国标准化协会(ANSI) 制定了ANSI C。, ANSI C 为基础:,不同机器有不同版本,尤其是函数均应参考相应的机器。, 1.2 C语言的特点,只有通过学习,方可理解C之特点,先简叙之:,1. 简洁、紧凑、方便、灵活 32个关键字,9
4、种控制语句, 主要用小写字母,压缩一切不必要成分,2. 运算符丰富 除了最基本的、%等运算外,还将括号、赋值、类型强制转换等均作为运算符,共有34种运算符。,3. 数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。,4. 具有结构化的控制语句 模块完整,控制中的语句可完整化。,5. 语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。,6. 可与机器硬件打交道,直接访问内存地址,具有“ 高”、“ 低”级语言之功能。,7. 生成目标代码质量高,执行效率高。,8. 可移植性优于汇编语言。,1.3 简单的C程序介绍,为了更好、更快地掌握C程序,我们先看几个C语言程序:,例1.
5、 main( ) printf (This is a c programn); ,例2. main ( ) /*求两个数之和*/ int a, b, sum; /*这是定义变量*/ a=123; b=456; sum=a+b; printf(sum is %dn, sum); ,例3.main( ) /* 主函数*/ int a, b, c; /*定义变量*/ scanf(%d, %d, ) /*输出c的值*/ ,int max (x, y) int x, y; /*对形参x、y作类型定义*/ int z; /*max函用到的变量z,也要加以定义*/ z=y; if (xy) z=x; ret
6、urn (z); /*将z的值返回,通过max带回调用处*/ ,通过分析,初步看到:1. C程序全部由一个一个的函数构成。至少有一个主函数main ( ), 其它函数可被主函数调用或相互调用。其它函数可为C 函数库中函数,也可为自己编的函数。,上述特点称为程序的模块化.,2. 函数的构成: 函数说明+函数体,函数体: 变量定义与执行语句,可允许空函数: dump ( ) ,函数说明包括:函数名、类型、属性、参数等,3. 函数的执行一定从main ( )开始。尽管main ( )函数位置可自由。,4. 书写自由,一个语句可多行,一行可多个语句。,5. 每一条语句必须有一个分号;,6. C语言的输
7、入 / 出均以函数形式出现。scanf( ), printf( ).,7. 可用/ /对C语言加注释,主讲教师:刘 丹,第二章 数据类型、运算符与表达式,2.1. 数据类型,著名计算机科学家沃思提出: 程序数据结构算法,所以,存放数据的方式直接反映了一种语言的数据表达能力。 数据的存储方式又称之为:数据类型。,举 一个例子:以考生各科成绩及总分排队问题为列。 成绩的存放 以数组形式 排队方法 算法,前面已述. C数据类型丰富,分为:,基本类型,构造类型,指针类型,空类型,整型,字符型,实型,单精度,双精度,数组,结构体,共用体,数据有常量、变量之分,均为其中一种类型。,本章先学习基本类型。,枚
8、举,2.2 常量与变量,2.2.1 常量和符号常量,常量 程序运行过程中不能被改变的量。,一般的数据显式写法均表示常量。 如程序中: 20 整型常量 15.8 实型常量 a 字符常量,例: #define PRICE 30 main ( ) int num, total; num=10; total=num*PRICE; printf(total=%d,total); ,还可用一个符号表示一个常量 符号常量,符号常量(一般用大写,以区分变量),再如: =3.1415629 #define PAI 3.1415629,#define PRICE 30,2.2.2变量,程序执行中可以改变的量称为变
9、量。变量包括变量名和变量值。,变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。,标识符 由字母、数字、下划线组成且由字母或下划线开头的字符串。,标识符可用来命名变量及作为常量名、函数名、类型名、文件名等,一个程序内不得有重复名。 如: _sum, sum, student_name, price等,习惯上,变量名、函数名等用小写字母表示。常量名用大写字母表示(以增加可读性)。,另: 需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name student_ number为同一名字。,C语言中, 变量须先定义,后使用 如: int stud
10、ent student=30; 则若写成student=30, 则未定义, 编译时指出其错。, 一旦变量被定义,即可在编译时为其分配相应数量的单元。,一旦变量被定义, 其类型便确定。则可检查其运算的合法性。,如: a % b 表示a整除以b的余,则a,b必须为整型量。,2.3整型数据,2.3.1 整型常量,整型常量 整型常数,C语言提供了三种形式 十进制 如: 256, 308, 120等, 八进制 以数字0开头表示的整数 例:0235, 0146 012等. 0235=28238515710 014618248610210 012(182)1010,十六进制 以0 x开头的整型数 如: 0
11、x16, 0 x28,2.3.2 整型变量,一、分类: 分为四种:基本型、短整型、长整型、无符号型,2.短整型: 用short int或 short定义,3.长整型: 用long 或 long int 定义,1.基本型: 用int定义,4.无符号型: 不存放符号,则不带符号数.,又分无符号整型,无符号短整型, 无符号长整型。,上述各种类型所占内存单元数及取值范围视不同机器而不同。详见P13。,二、定义方法 整型变量分别以下列方式定义,2. 短整型 short int 或 short a, b, c;,3. 长整型 long int 或 long a, b, c;,1. 基本整型: int a,
12、 b, c;,4. 无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;,例: main ( ) int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsignd u; /*指定u为无符号整型变量*/ a=12; b= 24; u=10;,c=a+u; d=b+u; printf(a+u=%d, b+u=%dn,c,d); ,由此看到: 不同类型的整型数据可进行算术运算。 但有一定规则,见2.7.,运行结果为 a+u=22, b+u= 14,三、关于整型常量 程序中出现的整型常数,
13、系统按以下规则分配变量(内存单元)或赋值给相应变量,2. 若超越,而在21474836482147483647之间,则可赋给 long int 变量。,1. 当常数(量)在 3276832767之间,则可赋给int, long int 变量。,4. 一个非负整数32768 则可赋给 unsigned int。,5. 一个常数后加 l,或L,表示长整数. 如123l. 主要用于函数调用时形、实参数传递。,3. 若int, short int 长度相同,则二者皆可赋值。,2.4 实型数据,2.4.1 实型常量,有二种表示形式 1.十进制形式 如: 0.126, 523.64等,2. 指数形式 对于
14、较大或较小的数,可用指数形式 0.0000126 1.26E 5 1260000 1.26E+6 或1.26E6 E , e 均可.,分为单精度型与双精度型. 分别为 float x, y, z; (单精度) double a, b, c; (双精度),一般地: 单精度占4字节内存单元; 双精度占8字节内存单元.,2.4.2 实型变量,注意: 不同机器对实型变量的有效数字长度的限制 如: pc机, 单精度一般为7位, 双精度15位,单精度数值: 10381038双精度数值: 1030810308,于是: float a; a=123456.789 则实际赋值a123456.7,2.5 字符型数
15、据,用一对单引号括起来的单个字符。 如 a , A , 二者不一样.,此外,以 开头后接一个字符或n个字符代表了一种特殊字符常量。 转义字符。 如 n 换行, r 回车,2.5.1 字符常量,其它如下表:,字符形式,n,t,v,b,r,f,ddd,xxh,功能,换行,横向跳格(即跳到下一个输出区),竖向跳格,退格,回车,走纸换页,反斜杠字符“ ”,单引号(撇号)字符,1到3位8进制数所代表的字符,1到2位16进制数所代表的字符,注意: 表示ASCII码字符,三位八进制,如 101 表示字母A,又: x 十六进制ASCII 字符 x 41 表示字母A,其定义方式为: char c1, c2; c
16、1= A ; c2= B ;字符变量只占一个字节单元。,2.5.2 字符变量,用来存放一个字符的变量.,一个字符存入一个字符变量。其对应单元存放的是其ASCII码,即ASCII码的二进制形式。,由此: 字符变量中的数据是一整型数据。输出时既可输出字符,亦可输出整数,且字符变量可作整数运算。,2.5.3 字符数据的实际存放形式,例1: main ( ) char c1, c2; c1=97; c2=98; printf (%c %c, c1, c2) ,运行结果 a b,看如下几个例子:,例2: main ( ) char c1, c2; c1= a ; c2= b ; c1=c1 32; c2
17、=c2 32; printf (%c %c, c1, c2) ,运行结果 A B,例3: main ( ) int i; char c; i= a ; c=97; printf (%c, %d n, c, c); printf (%c, %d n, i, i); ,运行结果: a , 97 a , 97, 有的系统将一个字节的整型变量的最高位,作为符号。这时对0127之间的字符可输出正整数(ASCII)。但128255字符最高位为1, 则作为负数输出。, 由此最好用unsigned int 存放字符整数(ASCII)。,注:,用双引号括起来的字符串。 例: Good Morning! 注意A
18、与A是不同,字符串存放时,在最后加上/ 0 空字符。 于是:,Good Morning ! /0,2.5.4 字符串常量,A ,A /0,但A,A,注意:1. 字符串长度=实际字符个数+1,但最后0不输出. printf ( Good Morning! ),此处不写 /0。 自动加上。,2. 单个字符的字符串不能赋给字符变量。 例: char c; c= a ; 是错误的。,2.6 变量赋初值,C语言允许定义变量时赋予初值。 如: int i = 6; float x=8.35; char c =6;,*也可对某个变量赋初值: int a, b,c = 6;,*不可能将同初值的变量赋初值时写成
19、: int a=b=c=6; 只能: int a=6, b=6, c=6;,定义变量时赋初值实际上是在运行时执行一个赋初值语句: int a=6;相当于: int a; a=6;,2.7 类数值型数据间的 混合运算,C语言允许双精度、单精度、整型及字符数据之间混合运算 10+a+1.58765.1234 b是允许的。,但有一个规则:先转换成同一类型,再计算。,double float,高低,图中“ ” 表示必定转换。如a + b,先转换为int。结果为 int。,转换方法:,long,unsigned,int char, short,即: 既使是同一种类型也按 转换。,图中“ ” : 表示低,
20、 高型数据运算时,均先转换为高型。,例: 10+ a+if d /e,其中: i int f float d double e long, 10+a: 转为int, 结果为int, if: 转为double, 结果为double, + : 转为double, d /e : 转为double, 转为double,则运算时:,2.8 算术运算符与 算术表达式,运算符: 运算的符号表示。 C语言有丰富的运算功能,先简述之,2.8.1. C运算符,1. 算术运算符 +, , , /, % , 等,3. 逻辑运算符 !, &, ,2. 关系运算符 , =, =, !=,4. 位运算符 , , , , &
21、.,5. 赋值运算符 = 等,6. 条件运算符 ? 等,7. 逗号运算符 ,8. 指针运算符 *, &,11. 分量运算符 , ,12. 下标运算符 ,13. 其它运算符 如函数的调用( ),9. 求字节数运算符 size of,10. 强制类型转换运算符 (类型),2.8.2 算术运算符和算术表达式,一、基本算术运算符,+ 加法 正值 3+6, +3, 减法 负值 6 4, 5, 乘法 38,/ 除法 8 / 5,% 求余 7 % 4 的值为3,注: 两个整型数据相除 (结果为整,一般向零靠拢)。 5/ 3 1,“ /” 中,有一个 float, 则结果为double型,使用时千万注意 in
22、t / int 出现数据丢失。,二、算术表达式及算术运算符的优先级与结合性,运算对象: 常量、变量、函数等,优先级: ( ), , /, %, +, ,结合性: 同一优先级, 自左向右,为左结合性,反之为右结合性。,例: a b / c 1.5 + ad e,当类型不同的数据进行运算时,按2.7介绍的类型转换。,算术表达式: 用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子。,三、可利用强制类型转换运算符将一个算术表达式转换为所需类型,形式: (类型名) (表达式),例如: (double) a 将a转换为double,(int) (x+y) 将x+y转换为int,(float
23、) (5%3) 将5%3转换为float,注: 1. 括号不能省略。 如: intx 会理解为变量intx.,2. 转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变。 float x;,又如: (int) (x+y) 若省略: (int)x+y会变成将x转成整型.,(int)x; 则x本身仍为实型,而(int)x由一个中间变量(整)存放x的整数部分。,例: main ( ) float x; int i; x=3.6; i= (int) x; printf (x=%d, x, i); ,则: x=3.600000, i=3.,总结以上类型转换,有二种: 1. 强制,另: 强制类型转
24、换运算优先于算术运算符.,2. 系统自动,如: 若x为float, 则x%3不合法。 但可用(int)x%3来解决。(附录III介绍了优先级),四、自增,自减运算符,设有int i = 3;,+ + 自增1, 自减1,则: + +i, i+都会使i变为4,但有区别:,+i: 先使i值+1,再使用i值;,i+: 先使用i值,再使i值+1.,j= +i; j=4, i=4. (i=i+1; j=i;),j=i+; j=3, i=4. (j=i; i=i+1),同理: i, i ,均使i值1,但:,又如: printf (i=%dn, i+); 结果: i=3,若: printf (i=%dn, +
25、i); 结果: i=4, i: 先使i值1,再使用i值;,i : 先使用i值,再使i值1,i=3;,几点注意:1. +和 运算法只能用于变量,不得用于常量和表达式.,2. +, ,的结合性为从右至左,而一般算术运算符为从左至右。如:,如 5+ +, (a+b)+ +均为不合法.,i+ 和+ +为同一优先级.,i+相当于(i+),若 i=3, 则结果为3, i为4. +, 主要用于循环变量自增或自减。,1. 要慎用+、 运算符。,五、有关表达式使用中的问题说明,则:先对i进行3次自加,为6,然后三个i相加为18,而i为6。,如: 表达式(i+)+(i+)+(i+) (i=3) 一般认为: 从左至
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谭浩强 语言程序设计 ppt 课件
链接地址:https://www.31ppt.com/p-1374979.html