谭浩强C语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《谭浩强C语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谭浩强 语言程序设计 课件
- 资源描述:
-
1、第一章第二章第三章第四章第五章第六章第七章第一章第一章 C C语言概述语言概述 C语言 既可作为系统软件的程序设计语言,又可作为应用软件的程序设计语言。 尤其是当今计算机应用极为广泛,软件的设计、编写质量要求高,经常与硬件部分打交道,如:界面设计等,所以用C语言编写是最理想的。因而C语言也是当前计算机语言中用得最广泛的语言之一。 1.1 C 1.1 C语言出现的历史背景语言出现的历史背景一、操作系统的设计语言一、操作系统的设计语言O.S. 操作系统,为用户使用计算机提供一个操作环境:系统命令、语言编程等。如:DOS. UNIX以前:O. S .软件用汇编指令编写。汇编语言:一种二进制指令代码的
2、符号表示,既繁琐,又易出错,可读性差。改进:用C语言编写,既提高了程序的可读性,又可与硬件打交道。二 、二 、发 展 过 程发 展 过 程 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language) 1967年,Matin Richards对CPL进行改进、简化 、 推 出 了 B C P L ( B a s i c C o m b i n e d Programming Language) 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个U
3、NIX系统。 美国贝尔实验室D.M. Ritchie 在B语言基础上设计出了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
4、之特点,先简叙之:1. 简洁、紧凑、方便、灵活简洁、紧凑、方便、灵活 32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分2. 运算符丰富运算符丰富 除了最基本的、%等运算外,还将括号、赋值、类型强制转换等均作为运算符,共有34种运算符。3. 数据结构丰富数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。4. 具有结构化的控制语句具有结构化的控制语句 模块完整,控制中的语句可完整化。5. 语法严格,但有灵活性语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。6. 可与机器硬件打交道,直接访问内存地址,具可与机器硬件打交道,直接访问内存地址,具有有“ 高高”
5、、“ 低低”级语言之功能。级语言之功能。7. 生成目标代码质量高,执行效率高。生成目标代码质量高,执行效率高。8. 可移植性优于汇编语言。可移植性优于汇编语言。1.3 简单的简单的C程序介绍程序介绍 为了更好、更快地掌握C程序,我们先看几个C语言程序:例1. 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;
6、/*定义变量*/ scanf(%d, %d, &a, &b); /*输入变量a和b的值*/ c=max(a, b);/*调用max函数,将得到的值赋给c*/ printf(max=%d,c;) /*输出c的值*/ int max (x, y) int x, y; /*对形参x、y作类型定义*/ int z; /*max函用到的变量z,也要加以定义*/ z=y; if (xy) z=x; return (z); /*将z的值返回,通过max带回调用处*/ 通过分析,初步看到通过分析,初步看到:1. C程序全部由一个一个的函数构成。至少有一个主函数main ( ), 其它函数可被主函数调用或相互调
7、用。其它函数可为C 函数库中函数,也可为自己编的函数。上述特点称为程序的模块化.2. 函数的构成: 函数说明+函数体 函数体: 变量定义与执行语句 可允许空函数: dump ( ) 函数说明包括:函数名、类型、属性、参数等3. 函数的执行一定从main ( )开始。尽管main ( )函数位置可自由。4. 书写自由,一个语句可多行,一行可多个语句。5. 每一条语句必须有一个分号;6. C语言的输入 / 出均以函数形式出现。scanf( ), printf( ).7. 可用/ /对C语言加注释第二章第二章 数据类型、运算符与表达数据类型、运算符与表达式式2.1. 数据类型数据类型 著名计算机科学
8、家沃思提出: 程序数据结构算法 所以,存放数据的方式直接反映了一种语言的数据表达能力。 数据的存储方式又称之为:数据类型。 举 一个例子:以考生各科成绩及总分排队问题为列。 成绩的存放 以数组形式 排队方法 算法前面已述. C数据类型丰富,分为:基本类型构造类型指针类型空类型整型字符型实型单精度双精度数组结构体共用体数据有常量、变量之分,均为其中一种类型。本章先学习基本类型。枚举2.2 常量与变量常量与变量2.2.1 常量和符号常量常量和符号常量常量 程序运行过程中不能被改变的量。一般的数据显式写法均表示常量。 如程序中: 20 整型常量 15.8 实型常量 a 字符常量例: #define
9、PRICE 30 main ( ) int num, total; num=10; total=num*PRICE; printf(total=%d,total); 还可用一个符号表示一个常量 符号常量符号常量(一般用大写,以区分变量)再如: =3.1415629 #define PAI 3.1415629 #define PRICE 302.2.2变量变量 程序执行中可以改变的量称为变量。变量包括变量名和变量值。变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。标识符 由字母、数字、下划线组成且由字母或下划线开头的字符串。 标识符可用来命名变量及作为常量名、函数名、类
10、型名、文件名等,一个程序内不得有重复名。 如: _sum, sum, student_name, price等 习惯上,变量名、函数名等用小写字母表示。常量名用大写字母表示(以增加可读性)。 另: 需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name student_ number为同一名字。C语言中, 变量须先定义,后使用 如: int student student=30; 则若写成student=30, 则未定义, 编译时指出其错。 一旦变量被定义,即可在编译时为其分配相应数量的单元。 一旦变量被定义, 其类型便确定。则可检查其运算的合法性。如: a %
11、 b 表示a整除以b的余,则a,b必须为整型量。2.3.1 整型常量整型常量整型常量 整型常数C语言提供了三种形式 十进制 如: 256, 308, 120等 八进制 以数字0开头表示的整数 例:0235, 0146 012等. 0235=28238515710 014618248610210 012(182)1010十六进制 以0 x开头的整型数 如: 0 x16, 0 x282.3.2 整型变量整型变量一、分类:一、分类: 分为四种:基本型、短整型、长整型、无符号型 2.短整型: 用short int或 short定义 3.长整型: 用long 或 long int 定义 1.基本型: 用
12、int定义 4.无符号型: 不存放符号,则不带符号数. 又分无符号整型,无符号短整型, 无符号长整型。 上述各种类型所占内存单元数及取值范围视不同机器而不同。详见P13。二、定义方法二、定义方法 整型变量分别以下列方式定义2. 短整型 short int 或 short a, b, c;3. 长整型 long int 或 long a, b, c;1. 基本整型: int a, b, c;4. 无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c;例: main ( ) int a, b, c, d; /*指定
13、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三、关于整型常量三、关于整型常量 程序中出现的整型常数, 系统按以下规则分配变量(内存单元)或赋值给相应变量 2. 若超越,而在21474836482147483647之间,则可赋给 long int 变量。 1. 当常数(量)在 3276832767之间,则可赋给int
14、, long int 变量。4. 一个非负整数, =, =, !=4. 位运算符 , , , , &.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注: 两个整型数据相除 (结果为整,一般向零靠拢)。
15、 5/ 3 1“ /” 中,有一个 float, 则结果为double型,使用时千万注意 int / int 出现数据丢失。二、算术表达式及算术运算符的优先级与结合性运算对象: 常量、变量、函数等优先级: ( ), , /, %, +, 结合性: 同一优先级, 自左向右,为左结合性,反之为右结合性。例: a b / c 1.5 + ad e 当类型不同的数据进行运算时,按2.7介绍的类型转换。 算术表达式: 用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子。三、可利用强制类型转换运算符将一个算术表达式转换为所需类型形式: (类型名) (表达式)例如: (double) a 将a
16、转换为double(int) (x+y) 将x+y转换为int(float) (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,
17、 i=3.总结以上类型转换,有二种: 1. 强制另: 强制类型转换运算优先于算术运算符.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
18、若: printf (i=%dn, +i); 结果: i=4 i: 先使i值1,再使用i值;i : 先使用i值,再使i值1i=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) 一般认
19、为: 从左至右: 3+4+5=12,i6.但Turbo C. MSC 都是先取三个原值相加: i+i+i=9 i6如果表达式数为: k=(+i)+(+i)+(+i)2. 在表达式中,有的运算符为一个字符,有的为两个字符。3. 在函数调用时,如:一般地: 自左至右尽可能多地将若干字符组成一个运算符。例: i+j, 究竟理解为(i+)+j还是i+(+j)?printf(%d, %d, i, i+);若i=3, 若参数计算从左至右, 则输出 3, 3若从右至左, 则输出4, 3上述问题看似复杂,最好上机实践.2.9 赋值运算符和 赋值表达式符号 = 为赋值运算符。2. 整型数据赋给实型变量,数值不变
20、,但按实数形式存放. 1. 将实型数据(无论单,双精度)赋给整型变量时,舍弃小数.赋值时,两边类型若不一致,则按以下规则转换:4. 将intlong int, 进行符号扩展。 即: 符号扩展, 低16位long 的低16位。5. long int int 则高16位截断。3. 字符型数据赋给整型变量时:(2)字符带符号整型变量,则字符高位扩展。(1)字符无符号整型变量,则存入低8位,高8位补零。6. 将unsigned int 型long int高位补0。原值传送,但数据大小不能超值。 如: unsigned int a=65535; int b; b=a; 则越界。而位数相同部分赋值 uns
21、igned int int unsigned long long unsigned short short7. 非unsigned 型长度相同的unsigned型数据,原样传送(包括符号位) 一、复合赋值运算符:在 号之前加一个其它运算符。C语言规定:凡是二目运算符均可构成复合运算符。例: a+=3; 相当于 a=a+3 x=y+8; 相当于 x=x (y+8) x%=3; 相当于x=x% 一般形式: 二、赋值表达式例: x=10 为一赋值表达式 其中又可以是一个赋值表达式。例: x=(y=10) 相当于 y=10;x=y 由于赋值号为右结合性,于是 ( ) 可省略, 即为:x=y=10;例:
22、 a + = a =aa (设a12)又: a=5+(c=6) c=6, a=11 a=(b=4)+(c=6) b=4, c=6, a=10 a=(b=10)/ (c=2)b=10,c=2, a=5进一步,还可用复合赋值运算符作下列运算:步骤: aa144. a =a a a=a a a=12 144= 132 a + = 132 a = a+(132) = 2642.10 2.10 逗号运算符和逗号运算符和逗号表达式逗号表达式 一般形式: 表达式1, 表达式2其计算规则: 先计算表达式1,再计算表达式2,最后值为表达式2的值。例:a=35, a 4 则: 先计算3 5, a15, a 4=6
23、0,结果为60。又如: (a=35, a 4), a+5 扩展形式: 表达式1, 表达2, ,表达式n,结果为20(作为逗号表达式的值) a+5a 即 20a. 3 5=15a a 4=60 (此时a值仍未变)结果为表达式n的值 注意: x=(a=3, 63) 赋值表达式, x18; x=a=3, 6 a 逗号表达式, x3. 逗号表达式主要用于某些语句中需一次计算多个表达式值的情况。如在循环语句中。 函数调用中的实参之间虽然用的是逗号间隔,但不是逗号表达式。 如: printf (%d, %d, %d, a, b, c);第三章第三章 最简单的最简单的C C程序设计程序设计3.1 C语句概述
24、语句概述 C语句全部为可执行语句,对应若干机器操作指命令C程序由许多源文件组成。(分别编译,然后连接)每一个源文件由预编译命令和若干函数组成。每一个函数由说明部分和语句部分组成。其结构如图除说明部分外,重要部分为语句部分。C 程 序源程序文件1源程序文件i源程序文件n预编译命令函 数 1函 数 n说 明 部 分执行部分(语句)C C 语句分为五类1. 控制语句改变语句的执行顺序共有共有9种控制语句种控制语句: if ( ) else (条件) for ( ) (循环) while ( ) (循环) do while (循环) continue (结束本次循环) switch (多分支选择) b
25、reak (中止整个循环) goto (转移) return ( 函数返回)( )表示条件, 表示语句2. 函数调用语句3. 表达式语句printf ();表达式加; 如: i=i+1; i+; x+y; 其函数调用也可理解为表达式语句.5. 复合语句4. 空语句 ; 任何事情都不做.用 括起来的一系列语句。 如: z=x+y; t=z/100; printf (%f, t); 从结构化程序设计角度出发,程序有三种结构:顺序结构选择结构循环结构1. 顺序结构表示ABAB先执行A, 再执行B.2. 选择结构表示为ABPTFB TPFA存在某条件P, 若P为真,则执行A, 否则执行B。3. 循环结
展开阅读全文