《C语言程序设计》教案清华谭浩强.docx
《《C语言程序设计》教案清华谭浩强.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》教案清华谭浩强.docx(109页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》教案清华谭浩强
第一章C语言及程序设计概述本章要求:
了解C语言的特点、C语言与其它高级语言相比有什么异同;
了解C程序在PC机上的建立、编译和运行过程;
了解C语言程序设计思想的基本篇;
重点:
①C语言的主要特点;
2C语言在PC机上的运行过程及上机操作过程;
3常用算法的应用
难点:
无
一、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年:
——TurboC2.0(DOS操作系统、查错、Tiny模式生
成com文件)
1991年:
——TurboC++(3.0)支持windows3.X
说明:
TurboC语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。
2.C语言的特点
1•语言简洁、紧凑、使用方便、灵活
C语言:
一一共有32个关键字,9种控制语句;只供学习与交流
程序书写自由,主要用小写字母表示;
2•运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符;即:
把括号、赋值、强制类型转换都作为运算符处理
3•有丰富的数据类型
整型、实型、字符型、数据类型、指针类型、结构体类型、共用体(联合)类型等。
实现复杂的数据结构(链表、树、栈、图)的运算。
4•具有结构化的功能,用函数作为程序模块,实现程序的模块化5•语法限制不太严格,程序设计自由度大。
(放宽了语法检查)
例:
1)对数组下标越界不作检查,由程序编写者自己保证程序的正确;
2)整型数据、字符型数据、逻辑型数据可以通用。
6•能直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
7•生成目标代码质量高,程序执行效率高。
8•用C语言编写的程序,移植性较好。
说明:
C语言比其它高级语言难掌握,对编程人员要求较高程序员使用C语言编写程序会感到限制少、灵活性大,功能强,可以编写出任何类型的程序。
3.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编译程序Link程序
3.DOS下C语言的运行
目前DOS下运行C语言软件为:
TurboC2.0
(1)TurboC2.0的特点:
是一个把①编辑②编译③连接④运行等全部操作集中在一个界面上。
(2)TurboC2.0的操作及运行书:
P8
五、算法的概念
1.算法的概念书:
P13
算法:
程序的操作步骤。
/程序中的数据
在程序设计中:
[操作步骤
有:
程序=数据结构+算法沃思NikiklausWirth
程序=算法+数据结构+程序设计方法+语言工具和环境
2.计算机算法分为两大类:
①数值运算算法②非数值运算算法
(1)数值运算算法:
求数值解;通过运算得出一个具体值,如求方程的根等
注:
数值运算一般有现成的模型,算法较成熟。
(2)非数值运算算法:
用于事务管理,如图书检索、人事管理等。
3、常用简单算法
(1)累乘即:
1X2X3X4X5……X100
1X2-S(结果)
SX3-S(结果)
SX4-S(结果)
I
I
I
SX100—S(结果)
只供学习与交流
(2)累力卩即:
1+2+3+4+5……+100
1+2-S(结果)
S+3-S(结果)
S+4-S(结果)
I
I
I
S+100—S(结果)
(3)找最大值5,2,4,12,9
5—max(max放最大值,后面的数都和它比较)
2>max不成立
4>max不成立
12>max成立:
12—max
9>max不成立
注:
该算法可扩展为在一批数据中,找某一个数
(4)其它算法
P15例2.2例2.3例2.4例2.5课余自学(必须)
4、算法的表示
常用的有:
①自然语言②传统流程图③结构化流程图④伪代码⑤PAD
图
(1)传统流程图
CD口O二一。
起止框输入输出框判断框处理框流程线连接点
表示方法:
P19例
注:
传统流程图对流程线的使用没有严格限制,难以实现结构化程序设计为了限制流程线的滥用,提出三种基本结构:
①顺序结构②选择结构③循环结构
顺序结构选择结构
t
语句
<表达式丿
1
!
语句
丨语句
语句1|语句2
理
V
b)
(2)N-S流程图
特点:
去掉了带箭头的流程线,全部算法写在一个矩形框内。
称N-S结构化流程图
\立
顺序结构
选择结构
循环结构
作业:
p372.4
上机:
熟悉TurboC2.0的操作及运行
第三章数据类型、运算符与表达式
本章要求:
本章是C语言的基本概念开篇,所介绍的概念是学习C语言的基础;要求熟练掌握数据类型、运算符与表达式。
重点:
①C语言数据类型定义的方法和分类。
②C语言运算符、表达式的使用以及它们的主要特点。
难点:
自增、自减运算符、赋值运算符、逗号运算符及它们的混合使用
a变量名
存储地址)2000
地址的概念
变量值
存储单元
3•常用的基本数据类型
(1)整型
1)整型常量:
十进制整数123,-11,0非0开头
八进制整型0123,-0110开头
十进制整数指数形式
1.23
1.23e3,
.0123
1.00e-3
数的表示范围P46
十六进制整型0x110x200x0D0XFF0x4e
定义
存储字节
数的范围
基本型
intx
(2字节)
-32768~32767
短整型
shortintx
(2字节)
-32768~32767
长整型
long
intx
(4字节)
2,147,483,6492,147,483,647
无符号型
unsignedint
x(2字节)
0~65535
unsignedshortx(2字节)
0~65535
unsignedlong
x(4字节)
0~4,294,967,295
注:
数据在内存中是以:
一进制形式存放
如:
9为
00001001
例:
x=13;
x=015;
x=0xD存储结构见P44图3.5
0x/0X开头
说明:
在一个整常量后面加一个字母:
I或L,是长整型常量。
22L0733L
0xae4l
2)整型变量:
例3.2、3.3
注:
数据超过数据范围,会发生数据溢出
(2)实型(浮点数)
1)实型常量:
2)实型变量:
表3.2
单精度
float
(4字节)
3.4x10-38~3.4x1038
TC默认
-308308
1.7x10~1.7x10
双精度
double
(8字节)
说明:
实型常量不分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字符串结束符
\n换行\t水平制表
\ddd八进制数
\xdd十六进制数
2)
字符变量:
charc
(1字节)
说明:
一个字符变量,只能放一个字符常量。
实际是把该常量的ASCII值,送入字符变量中。
即:
‘B'(66)c(字符变量)
书P374ASCII表p50例3.6-7
c=‘B'c的内容为66
故:
字符数据可以进行算术运算;即:
c=‘B'+2为68字符数据在内存中的存储方式书P50
unsignedchar0-255char-128-127有符号数在TC中是用
补码表示的
127(0x7f)01111111128(0x80)10000000
复习:
补码的规定:
正数:
其原码、反码、补码相同
负数:
最高位为1,其余各位为原码的反码(原码的相应位取反),然后对整个数加1。
140(0x8c)10001100^11110011+1取反加1)—1111010CH-0x74-0x7410001011+1取反加1)—10001100—0x8c
(0x80为负数-74高位为1)
3)字符串常量
用双引号括起来的字符“a”,“ABFD”“a”=“0”<>‘A'
说明:
C规定,在每一个字符串的结尾应加一个“字符串结束标志”
(\0),
以便系统判断字符串是否结束。
4.各类数值间的混合运算
1)整型、字符型、单精度型、双精度型数据一一可以混合运算
2)字符型、整型一一可以通用
规贝U:
高doublefloat
long
unsigned
低intchar,short
例如10+'a'+8765.1234*'b'-858873.593200(TC默认6
只供学习与交流
位小数)
10+97+1.5-8765.1234*98
2.运算符和表达式
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值为9i值为6
z=x+++y;
//变量x右结合运算符++(不是3+4+5=12)
printf("z=%d,x=%d,y=%d",z,x,y);
}
输出结果:
z=6x=4y=3
如果:
z=}x+++y;输出结果:
z=0x=4y=3x先为-4,然后+y,
最后x++
3•赋值运算符和赋值表达式(优先级低于算术,右结合)
(1)“=”一一赋值运算符
作用:
将一个数据赋给一个变量即:
x=21
注意:
如果赋值运算符两侧的类型不一致,在赋值时,要进行类型转
换。
P61例3.9
即:
floatf;
f=23
f值为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+4a值为10x值为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――代表“真”o――代表“假”
7•逻辑运算符和逻辑表达式(书P88)(优先级低于关系,左结合)
(1)3种逻辑运算符p89表5.1
&&(与)||(或)!
(非)
(2)逻辑表达式
表达式逻辑运算符表达式p89
即:
(a>b)||(a+b>=b+c)(a=4)&&(b=8)1||
(1)
‘x'&&‘值为11
说明:
逻辑表达式值:
是一个逻辑值,即:
“真”或“假”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)(一般掌握)
位运算:
一一是对字节或字中的实际位进行检测、设置、屏蔽、移位位运算符:
&――位逻辑与|――位逻辑或A――位逻辑异或
位逻辑反>>――右移<<――左移
三、运算符小结
1•左结合方向的运算符
主要有:
算术运算符、关系运算符、逻辑运算符、逗号运算符
2•右结合方向的运算符
主要有:
自增、自减运算符、赋值运算符(复合的赋值运算符)、条件运
算符
例:
1)i=3;printf("%d,%d",i,i++);输出:
4,3
2)a=1;b=1;c=2;求:
a=b+=c*=5;输出:
a为11b为11c为10
3)a>b?
a>c?
ac:
b>c?
b:
c相当于:
a>b?
(a>c?
ac):
(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,y=7求:
y=y+++x-3x的值4y的值9
4)a=7,x=2.5,y=4.7求:
条件(?
)、
的值
=》0(整
s=x+a%3*(int)(x+y)%*2/4s
1(整型)/4(整型)=》0.25
a%3*(int)(x+y)%*2
二
》
型)
5)a%3&&a%5||a++>++b
如:
a=7,b=5a
的值8
如:
a=15,b=15
a
的值
如:
a=15,b=14
a
的值
如:
a=15,b=13
a
的值
四、该章的主要例题
b的值6结果值11||1
16b的值16结果值01||0
16b的值15结果值00||0
16b的值14结果值10||1
数:
P39例3.1
P44例3.2P44例3.3
字符:
P49例3.5
P50例3.6P51例3.7
五、该章的主要习题
P653.53.63.8
3.93.10
3.12
2.500000
六、该章的主要上机内容
P39例3.1P44例3.2P44例3.3P51例3.7
P653.63.83.10
第四章简单的C程序设计(顺序程序设计)
知识点:
1、赋值语句;2、字符数据的输入/输出;
3、格式输入/输出语句printf和scanf及其格式控制符;%c、%f、%d(输
出宽度、对齐方式、其它格式控制符只作了解)
4、程序的结构框架。
重点:
1赋值语句;
2.基本输入/输出语句printf和scanf及其格式控制符%c、%f、%d等的
意义。
难点:
无
一、C程序结构
C程序
源程序文件1源程序文件2源程序文件n
\
预编译命令
函数1
函数n
说明部分F
执行部分(语句)
语句的分类P67P68
1、控制语句
1条件:
ifelse
2循环:
for()
3循环:
while()
4循环:
dowhile()
5循环结束:
continue
6终止循环或switch:
break
7多分支:
switch
8转向:
goto
9函数返回:
return
2、函数调用语句
printf(“a=%(”,a)
3、表达式语句
函数调用也可以认
i=i+1表达式i=l+1;表达式语句
为是表达式语句
4、空语句:
一个“;”
5、复合语句(用仃:
分程序)
{x=3;x=x+1;
print(“x=%x,x)
}
二•赋值语句
变量名=表达式
注:
是组成顺序结构的主要语句。
a=b;if(max<=x)max=x;
三.基本输入/输出语句
C语言本身不提供输入输出语句,输入输出操作是由函数来实现。
即:
printfputcharseanfgetchar
注:
(1)这些函数构成一个标准的I/O函数库(放在“stdio.h”中)
(2)如果要使用C语言库函数,要用预编译命令“#inelude”将有关“头文件”包括到用户源文件中。
#include#inelude“stdio.h”
当前目录当前定义的目录中寻找
1.printf函数格式输出函数
格式:
printf(格式控制,输出表列)格式控制:
一一用双引号括起来的字符串,也称为“转换控制字符串”printf的格式字符书P77表4.1
输出表列:
一一需要输出的数据、表达式
即:
printf(
“x=%5.1f,y=%d,z=%c”,x,y,z)
d,i
带符号十进制形式
u
无符号十进制形式
例3-3
c
字符形式
s
字符串形式
f
实数(小数)形式
默认6位小数
说明
:
1)
printf(“y4%”,y)
输出数据左对齐(默认为右对齐)
2)
数据输出长度的修正;
l――输出长整型或双精度数据即:
printf(“%ld,”,i,y)
h输出短型数据即:
printf(“%hu”,a)
-m.nm最小宽度n小数(实数)-