《C语言程序设计》教案清华谭浩强教案.docx
- 文档编号:7505216
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:152
- 大小:77.76KB
《C语言程序设计》教案清华谭浩强教案.docx
《《C语言程序设计》教案清华谭浩强教案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》教案清华谭浩强教案.docx(152页珍藏版)》请在冰点文库上搜索。
《C语言程序设计》教案清华谭浩强教案
第一章C语言及程序设计概述
本章要求:
了解C语言的特点、C语言与其它高级语言相比有什么异同;了解C程序在PC机上的建立、编译和运行过程;了解C语言程序设计思想的基本篇;
重点:
①C语言的主要特点;
②C语言在PC机上的运行过程及上机操作过程;
③常用算法的应用
难点:
无
一、C语言概述
C语言是目前国际上在各种计算机运行较为广泛流行的一种高级语
言。
主要表现为:
C语言:
适合于作为系统描述语言——可用来写系统软件。
具有高级语言的特点,又有低级语言(汇编语言)的特点。
C语言:
是AT&T贝尔实验室的DennisRitchie在1972年发明的。
C语言:
是在B语言的基础上发展起来的。
(ALGOL60)
C语言:
最早开始是用于UNIX操作系统。
(C语言和UNIX是相辅相成的)
DBASE、MicrosoftExel、MicrosoftWord、PC-DOS等,则是用C语言加上若干汇编子程序编写的。
1983年:
——制定的新标准,称为(美国国家标准化协会)ANSIC
1987年:
——TurboC1.0(Borland)1988年:
TC1.5(图形和文
本窗口)
1989年:
——Turbo
C2.0
(DOS操作系统、查错、
Tiny
模式生
成com文件)
1991年:
——TurboC++(3.0)支持windows3.X
说明:
TurboC语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。
二.C语言的特点
1.语言简洁、紧凑、使用方便、灵活
C语言:
——共有32个关键字,9种控制语句;程序书写自由,主要用小写字母表示;
2.运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符;
即:
把括号、赋值、强制类型转换都作为运算符处理
3.有丰富的数据类型
整型、实型、字符型、数据类型、指针类型、结构体类型、共用体(联合)类型等。
实现复杂的数据结构(链表、树、栈、图)的运算。
4.具有结构化的功能,用函数作为程序模块,实现程序的模块化
5.语法限制不太严格,程序设计自由度大。
(放宽了语法检查)
例:
1)对数组下标越界不作检查,由程序编写者自己保证程序的正确;
2)整型数据、字符型数据、逻辑型数据可以通用。
6.能直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
7.生成目标代码质量高,程序执行效率高。
8.用C语言编写的程序,移植性较好。
说明:
C语言比其它高级语言难掌握,对编程人员要求较高
程序员使用C语言编写程序会感到限制少、灵活性大,功能强,可以编写出任何类型的程序。
三.C程序的构成
例:
main()
/*主函数*/
{
inta,b,sum;
a=123;b=456;
/*定义变量*/
sum=a+b;
printf(
“
n”,sum);
/*输出变量*/
}
说明:
1)程序一般用小写字母书写;
2)每个程序必须要有一个main()(只能一个),称主函数;注:
C程序是由函数构成的,函数是C程序的基本单位。
函数:
系统提供的库函数;用户设计的函数。
3)程序体必须在{}之间;
4)每个语句的结尾,必须要有“;”作为终止符。
5)用/*..*/作注释
四、C程序的上机过程
1.演示书:
P5程序
2.上机步骤书:
P7
注:
C语言是一种编译语言,编译语言的特点:
编译
连接
源程序
目标程序
执行程序
*.C
*.OBJ
*.EXE
C编译程序
Link程序
3.DOS下C语言的运行
目前DOS下运行C语言软件为:
TurboC2.0
(1)TurboC2.0的特点:
是一个把①编辑②编译③连接④运行等全部操作集中在一个界
面上。
(2)TurboC2.0的操作及运行书:
P8
五、算法的概念
1.算法的概念书:
P13
算法:
程序的操作步骤。
在程序设计中:
程序中的数据
操作步骤
有:
程序
=数据结构
+算法
沃思
NikiklausWirth
程序=算法+数据结构+程序设计方法+语言工具和环境
2.计算机算法分为两大类:
①数值运算算法②非数值运算算法
(1)数值运算算法:
求数值解;通过运算得出一个具体值,如求方程的根等
注:
数值运算一般有现成的模型,算法较成熟。
(2)非数值运算算法:
用于事务管理,如图书检索、人事管理等。
3、常用简单算法
(1)累乘即:
1×2×3×4×5×100
1×2→S(结果)
S×3→S(结果)
S×4→S(结果)
┇
S×100→S(结果)
(2)累加即:
1+2+3+4+5+100
1+2→S(结果)
S+3→S(结果)
S+4→S(结果)
┇
S+100→S(结果)
(3)找最大值5,2,4,12,9
5
→
max
(max
放最大值,后面的数都和它比较
)
2>max
4>max
12>max
9>max
不成立不成立成立:
12不成立
→
max
注:
该算法可扩展为在一批数据中,找某一个数
(4)其它算法
P15例2.2例2.3例2.4例2.5课余自学(必须)
4、算法的表示
常用的有:
①自然语言②传统流程图③结构化流程图④伪代码⑤PAD
图
(1)传统流程图
起止框输入输出框判断框处理框流程线连接点
表示方法:
P19例
注:
传统流程图对流程线的使用没有严格限制,难以实现结构化程序设计为了限制流程线的滥用,提出三种基本结构:
①顺序结构②选择结构③循环结构
顺序结构
选择结构
f
t
.
f
语句
表达式
表达式
t
语句
语句
语句1
语句
2
循环结构
表达式语句
语句表达式
a)“当型”结构b)“直到型”结构
(2)N-S流程图
特点:
去掉了带箭头的流程线,全部算法写在一个矩形框内。
称N-S结构化流程图
P
A成立不成立当P1成立A
B
ABA
立
直到P1成
顺序结构选择结构循环结构
作业:
p372.4
上机:
熟悉TurboC2.0的操作及运行
第三章数据类型、运算符与表达式
本章要求:
本章是C语言的基本概念开篇,所介绍的概念是学习C语言的基础;要求熟练掌握数据类型、运算符与表达式。
重点:
①C语言数据类型定义的方法和分类。
②C语言运算符、表达式的使用以及它们的主要特点。
难点:
自增、自减运算符、赋值运算符、逗号运算符及它们的混合使用
一.数据类型
概念:
算法处理的对象——是数据,而数据是以某种特定的形式出现。
在C语言中,数据有:
常量、变量;一般它们都有一定的数据类型。
(C语言的数据结构是以数据类型形式出现的)
1.数据类型分类:
数据类型
基本类型
构造类型
整型int
字符型
实型(浮点型)
枚举类型
数组类型
结构体类型struct
共用体(联合)类型
单精度型
双精度型
union
float
double
指针类型*
空类型void
说明:
在程序中对用到的所有数据都必须指定其数据类型。
2.C语言中的常量和变量
常量:
——在程序运行过程中,其值不能被改变的量。
变量:
——在程序运行过程中,其值可以改变的量。
说明:
1)常量和变量,都要有一个名字表示它;
习惯上,符号常量(别名)名用大写,变量用小写。
符号常量的定义为:
#defineP30
其它常量:
直接用数据表示例:
2345.5‘e’3e+22)在C语言中,对变量要先定义,后使用。
3)如果一个变量被指定为一确定类型后,在C语言编译时,就能为其分配相应的存储单元。
存储地址)
2000
a
3
变量名
变量值
存储单元
地址的概念
3.常用的基本数据类型
(1)整型
1)整型常量:
十进制整数123,-11,0非0开头
八进制整型0123,-0110开头
十六进制整型0x110x200x0D
0XFF
0x4e
0x/0X
开头
说明:
在一个整常量后面加一个字母:
l或L,是长整型常量。
22L0733L
0xae4l
2)整型变量:
定义
存储字节
数的范围
基本型
int
x
(2字节)
-32768~32767
短整型
short
int
x
(2字节)
-32768~32767
长整型
long
intx
(4字节)
-2,147,483,648~2,147,483,647
无符号型unsignedint
x(2字节)
0~65535
unsignedshort
x(2字节)
0~65535
unsignedlong
x(4字节)
0~4,294,967,295
注:
数据在内存中是以:
二进制形式存放
如:
9为00001001
例:
x=13;
x=015;x=0xD
存储结构见P44图3.5
注:
数据超过数据范围,会发生数据溢出
例3.2、3.3
(2)实型(浮点数)
1)实型常量:
十进制整数
1.23
.0123
指数形式
1.23e3,1.00e-3
2)实型变量:
数的表示范围P46
表3.2
3.4x10-38~3.4x1038
单精度
float
x
(4
字节)
TC默认
双精度
doublex
(8
字节)
1.7x10-308~1.7x10308
说明:
实型常量不分float和double,只有十进制表达方式
有的C编译系统64位存储方式,如尾加f或F可表示32位:
324.567f
例:
x=1.23;x=123e3P47例3.4(存储精度)
(3)字符型
1)字符常量:
a)用单引号括起来的一个字符‘a’‘A’
b)
转义字符(由“专用字母”
)
书P48表
3.3例
3.5
\0字符串结束符
\ddd八进制数
2)字符变量:
\n换行\t水平制表
\xdd十六进制数
charc(1字节)
说明:
一个字符变量,只能放一个字符常量。
实际是把该常量的
值,送入字符变量中。
即:
‘B’(66)c(字符变量)
书P374ASCII表p50例3.6-7
ASCII
c=‘B’
c的内容为
66
故:
字符数据可以进行算术运算;即:
c=‘B’+2
为
68
字符数据在内存中的存储方式
书
P50
unsignedchar0-255char-128-127有符号数在TC中是用
补码表示的
127(0x7f)
01111111
128(0x80)
10000000
复习:
补码的规定:
正数:
其原码、反码、补码相同
负数:
最高位为1,其余各位为原码的反码(原码的相应位取反),然后对整个数加1。
140(0x8c)10001100→11110011+1(取反加1)→11110100→-0x74-0x7410001011+1(取反加1)→10001100→0x8c
(0x80
为负数-74
高位为
1)
3)字符串常量
用双引号括起来的字符
“a”,“ABFD”“a”=“
0”
<>
‘A’
说明:
C规定,在每一个字符串的结尾应加一个“字符串结束标志”
(\0),
以便系统判断字符串是否结束。
4.各类数值间的混合运算
1)整型、字符型、单精度型、双精度型数据——可以混合运算
2)字符型、整型——可以通用
规则:
高
double
float
long
unsigned
例如
低intchar,short
10+’a’+1-8765..1234*’b’-858873.593200
(TC
默认
6
位小数)
10+97+1.5-8765.1234*98
二.运算符和表达式
C表达式:
由变量、常量、函数等运算对象和运算符组成的式子
C运算符作用:
1)能把一些基本运算模块用单一的运算符处理
2)使用丰富的运算符,构成多种表达式
C运算符有优先级,优先级高的先执行,同级的由结合规则决定其处
理规则
C运算符有两种结合规则:
1)从左到右的结合运算顺序;即:
a=5+x-10;运算对象与左
边运算符结合
2)从右到左的结合运算顺序;即:
x=y=7;运算对象与右边运
算符结合
C运算符分类
书P55
1.基本运算符(算术运算符)
C语言有7个基本运算符
1)单目运算符:
(表示符号)正号“+”负号“-”
2)双目运算符:
+、-、*、/、%(模运算,求余运算,两侧为整数)
说明:
a)运算顺序的结合方向从左到右
b)求余(取模)运算符是对两个整数相除的余数,计算结果的符号与第一个数的符号相同。
即:
-5%3值为-2、-5%-3值为-2、5%-3值为2
2.自增、自减运算符(优先级高于算术,右结合)
作用:
——使变量的值增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值为
9
i值为
6
z=x+++y;
//变量
x右结合运算符
++
(不是
3+4+5=12)
printf("z=%d,x=%d,y=%d",z,x,y);
}
输出结果:
z=6
x=4
y=3
如果:
z=
最后x++
-x+++y;
输出结果:
z=0
x=4
y=3
x先为-4,然后+y,
3.赋值运算符和赋值表达式(优先级低于算术,右结合)
(1)“=”——赋值运算符
作用:
将一个数据赋给一个变量即:
x=21
注意:
如果赋值运算符两侧的类型不一致,在赋值时,要进行类型转换。
P61例3.9
即:
floatf;f=23f值为23.0000符号位扩展
(2)复合的赋值运算符
“+=、-=、*=、/=、%=”——在赋值符“=”之前加上其它运算符
称复合运算符(也称为自反运算符)
例:
a+=3
等价于
a=a+3
x*=y+8
等价于
x=x*(y+8)
y/=4
等价于
y=y/4
m%=3
等价于
m=m%3
说明:
C语言采用这种复合运算符:
为了简化程序,使程序精练;提高编译效率。
(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;[有:
1]a*a;92)a=a-(a*a);-63)a+=-6]-6+-6
a为:
-12结果值为:
-12
4.逗号运算符和逗号表达式(优先级最低,左结合)
用“,”将两个表达式连接起来。
格式:
表达式1,表达式2即:
3+5,6*9;
例:
3+5,6*9;值为54
(先求解表达式1,再求解表达式2,最后逗号表达式的值为表达式
值)
2的
a=2*5,a*3;
a值为
10
结果值为:
30
(先求:
a=2*5,后求:
a*3)
x=(a=2*5,a*3),a+4
a值为
10
x值为
30
结果值为:
14
说明:
使用逗号表达式的目的,只是为了得到各个表达式的值(常用于循环语句)
解表达式1的结果可能影响解表达式2的值
5.强制类型转换运算符(优先级高于算术,右结合)
在要转换的数据前,用小括号括上要转换的数据类型即:
(int)x;(int)(a+b)(int)x+y
格式:
(类型名)表达式
C一般会自动进行数据类型转换P56例3.8,用于不能自动转换的地
方x%3(floatf)
6.关系运算符和关系表达式(书P87)(优先级低于算术,左结合,高于赋值)
(1)6种关系运算符
<
<=
>
>=
(优先级高)
==
!
=
(优先
级低)
(2)关系表达式
表达式关系运算符
表达式
即:
a>ba+b>=b+c(a=4)<(b=8)‘x’==‘y’
说明:
关系表达式值:
是一个逻辑值,即:
“真”或“假”
C语言:
1——代表“真”0——代表“假”
7.逻辑运算符和逻辑表达式(书P88)(优先级低于关系,左结合)
(1)3种逻辑运算符p89表5.1
&&(与)||(或)!
(非)
(2)逻辑表达式
表达式逻辑运算符
表达式
p89
即:
(a>b)||(a+b>=b+c)
‘x’&&‘值y’为1
1
(a=4)&&(b=8)
1||
∞
(1)
说明:
逻辑表达式值:
是一个逻辑值,即:
“真”或“假”p90
优先次序(由高到低):
!
(非)算术运算符关系运算符&&和||
求值短路:
5>3&&2||8<4-!
01||∞(结果1)
0&&∞(结果0)如:
a&&b&&ca<>0才判断a&&b
赋值运算符
8.条件运算符(书P97)
格式:
表达式1?
表达式2:
表达式3
执行:
先求解表达式1,为真(非零),求表达式2为假(为0),求表达式3
例:
y=(a>b)?
a:
b;
说明:
a)条件运算符要求有三个操作对象(称三目元运算符)
b)条件运算符优先于赋值运算符
y=(a>b)?
a:
b;
先求
(a>b)?
a:
b
后赋值
c)条件运算符的结合方向为“自右至左”
(a>b)?
a:
b可写为:
a>b?
a:
b
a>b?
a:
b+5相当于:
a>b?
a:
(b+5)
a>b?
a:
c>d?
c:
d相当于:
a>b?
a:
(c>d?
c:
d)
*9.位运算符(书P298)(一般掌握)
位运算:
——是对字节或字中的实际位进行检测、设置、屏蔽、移位。
位运算符:
&——位逻辑与|——位逻辑或
~——位逻辑反>>——右移
^——位逻辑异或
<<——左移
三、运算符小结
1.左结合方向的运算符
主要有:
算术运算符、关系运算符、逻辑运算符、逗号运算符
2.右结合方向的运算符
主要有:
自增、自减运算符、赋值运算符(复合的赋值运算符)、条件运算符
例:
1)i=3;printf("%d,%d",i,i++);
2)a=1;b=1;c=2;求:
a=b+=c*=5;
输出:
4,
输出:
a为11
3
b为
11
c
为10
3)a>b?
a>c?
a:
c:
b>c?
b:
c相当于:
a>b?
(a>c?
a:
c):
(b>c?
b:
c)
(求最大值,如a=2,b=8,c=5结果为:
8)
3.运算符的优先次序(书P375附录Ⅲ)
()、!
++/--/-转移、算术、关系(<<=>>=)、关系(==!
=)、&&、||、条件(?
)、
赋值、逗号
例:
1)-a++相当于-(a++)
2)x=4,y=7求:
y+=++x-3x的值5y的值9
3)x=4,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 教案 清华 谭浩强