第1章C语言概述
1.1    C语言出现的历史背景
C语言是国际上广泛流行的计算机高级语言,即可用来写系统软件,也可用来写应用软件。
C语言是在B语言的基础上发展起来的。
早期的C语言运行在UNIX操作系统上,后来运行在DOS操作系统上,现在的C语言可运行在Windos操作系统上。C语言有许多版本,我们使用的是Turbo C 2.0。
P1,说明。
1.2    C语言的特点
C语言有许多优于其它语言的特点:
(1)语言简洁、紧凑,使用方便、灵活。
C语言一共只有32个关键字,9个控制语句,书写形式自由。
P2,表1.1。
(2)运算符丰富。
C共有34种运算符,如+、-等。
P2,说明。
(3)数据结构丰富。
C有整型、实型等多种数据结构。
P3,说明。
(4)具有结构化的控制语句。
C有if…else、while等多种结构化的控制语句。
P3,说明。
(5)语法限制不太严格,程序设计自由度大。
如对数组下标越界不作检查等。
P3,说明。
(6)C语言可进行位运算。
这是C区别于其它高级语言的主要特点。
P3,说明。
(7)生成目标代码质量高。
这也是C的优于其它高级语言之处。
P3,说明。
(8)C程序可移植性好。
即C程序可基本不做修改移到不同的计算机上运行。
P3,说明。
1.3    简单的C程序介绍
P4,例1.1,见ex1-1.c。
程序功能:打印一个字符串,并输出一个换行符。
P4,例1.2,见ex1-2.c。
程序功能:求两个数之和。
P5,例1.3,见ex1-3.c。
程序功能:求两个数的较大者。
分析这三个例子的执行过程。
说明:
4    C程序是由函数组成的。在上面的例子中的函数有:main、printf、scanf和max。其中main是主函数,printf、scanf是库函数,max是自定义函数。一个C程序一定要有一个主函数。库函数是放在*.h的库函数文件中,只要直接
调用就可。自定义函数要由用户先定义后调用。
5    认识一下C函数
C函数定义的一般格式为:
函数类型函数名(形参类型形式参数,…)
{
数据声明部分;
函数执行部分;
}
C函数调用的一般格式为:
函数名(实际参数,…)
(3)一个C程序总是从main主函数开始执行的,而不论main函数在程序中的位置如何。主函数可以调用子函数,子函数还可以调用子子函数。因此C程序是层次结构的。
(4)C程序一行可以写多个语句,每个语句以“;”结束。C程序是区分大小写字母的。C程序本身没有输入输出语句,其输入输出是由库函数printf和scanf来完成的。/*…*/是C的注释语句。
1.4    C程序的上机步骤
C程序编写好后,要经过编辑、编译、连接与运行四个步骤,这四个步骤的作用分别是:
编辑:把C语言源程序输入计算机并进行修改存盘,生成*.c的源程序文件。
编译:用C编译程序对*.c的源程序文件进行编译,生成*.obj的二进制文件。
连接:把*.obj的二进制文件与系统标准模块进行连接,生成*.exe的可执行文件。
运行:执行*.exe的可执行文件,输出执行结果。
以上步骤均可在Turbo C的工作平台上进行,启动Turbo C,就可以进行编辑,打命令Ctrl+F9,就可以进行编译、连接和运行,打命令Alt+F5,就可看到执行结果。
举例说明,见ex1-1.c。
1.5    Turbo C常用命令简介
1.    启动和退出
启动:在DOS下打TC,或在Windows下创建快捷命令执行。
退出:Alt+X
2.    程序的编辑
简单编辑:Ins:插入/改写Backspace:删除前一字符
Del:删除当前字符Ctrl+Y:删除一行
块操作:Ctrl+KB、Ctrl+KK:定义块首、尾
Ctrl+KC、Ctrl+KV、Ctrl+KY:块复制、块移动、块删除
Ctrl+KH:取消块定义
3.    程序载入与存盘
F3:载入程序F6:切换窗口
F2:存盘Alt+FN:新建程序
4.    编译和运行
Ctrl+F9:编译连接执行程序Alt+F5:查看执行结果
Ctrl+F7:添加监视表达式F7:进入子函数单步执行
F8:越过子函数单步执行Ctrl+F2:取消单步执行
举例说明,见ex1-1.c。
第2章程序的灵魂-算法
一个程序应包括两个方面的内容:
3    对数据的描述:即程序中的数据要指定它的类型和组织形式,也称数据结构。
4    对操作的描述:即程序中对要做的事要指明它的操作步骤,也称算法。
算法是程序的灵魂,也就是说,要计算机解决实际中的问题,“怎么解”是程序设计的关键。
2.1    算法的概念
(1)算法的定义
计算机算法:就是要计算机解决问题的操作步骤。
P13,例。
(2)算法的分类
计算机算法可分为两类:数值算法和非数值算法。
P14,例。
2.2    简单算法举例
P14,例2.1。
注意:解决同一问题可有不同的算法,算法有优劣之分。
P15,例2.2。
注意:循环是算法中常用的手段。
2.3    算法的特性
算法具有如下特性:
(1)有穷性
即经过有限步就能够完成。
P14,例2.1。P15,例2.2。
(2)确定性
即每一步都是确定的。
P14,例2.1。P15,例2.2。
(3)有零个或多个输入
即一个算法必须输入的数据可以是零个或多个。
P14,例2.1。P15,例2.2。
(4)有一个或多个输出
即一个算法可以输出一个或多个数据。
P14,例2.1。P15,例2.2。
(5)有效性
即算法中每一步骤都能有效地执行,并得到确定的结果。
P14,例2.1。P15,例2.2。
2.4    怎样表示一个算法
算法的表示法有多种,叙述如下:
(1)用自然语言表示
即把算法用人们日常使用的语言表示出来。
P14,例2.1。P15,例2.2。
特点:常常具有不确定性,不宜采用。
(2)用流程图表示
即把算法用一些特定的符号和图形表示出来。
P20,例2.6,例2.7。
特点:这是一种较好的表示法,经常采用。
(3)用N-S图表示
即把算法用一些特定的符号和图形表示出来。
P26,例2.11,例2.12。
特点:这也是一种较好的表示法,经常采用。
(4)用伪代码表示
即把算法用一些称为伪代码的文字和符号表示出来。
P29,例2.16,例2.17。
特点:这也是一种较好的表示法,经常采用。
(5)用计算机语言表示
即把算法用某种计算机语言符号表示出来。
P31,例2.20,例2.21。
特点:这当然是一种很好的表示法,可以输入计算机执行。
2.5    结构化程序设计方法
算法有三种基本结构,它们是:
(1)顺序结构:即算法的执行是按顺序一步接着一步的执行。
(2)选择结构:即算法的执行是对某些步骤可有选择的执行。
(3)循环结构:即算法的执行是对某些步骤可有限次的重复执行。
这三种基本结构的流程图见P23,图2.14,图2.15,图2.16,图2.17。用这三种基本结构设计程序称为结构化程序设计。
结构化程序设计的方法指的是:
1    自顶向下
2    逐步细化
3    模块化设计
4    结构化编码
P32,例。
第3章数据类型、运算符与表达式
3.1    C的数据类型
数据是程序的必要组成部分,也是程序处理的对象。C规定,在程序中使用的每一个数据必须属于某一数据类型。
C语言中所有的数据类型见P38。
3.2    常量与变量
在程序运行过程中,值保持不变的量称为常量,值可能发生变化的量称为变量。
3.2.1 常量与符号常量
1. 常量
常量是日常所说的常数、字符、字符串等。
P38,例。
2. 符号常量
用#define定义的用标识符来表示的常量。
格式:#define 常量名常量
功能:定义一个符号常量
P38,例3.1。
说明:常量名必须是一个标识符。
3.2.2 变量
1. 标识符
标识符是用来表示符号常量、变量、数组、函数、过程、类型及文件的名字的。标识符的命名规则:
(1)以字母或下划线开头,由字母、数字和下划线组成;
(2)不能与关键字同名,最好不要与库函数名同名;
(3)长度无限定,但不同版本的C编译时有自己的规定;
(4)区分大小写。
P40,例。
2. 变量的声明
格式:类型名变量名,… ;
功能:声明变量。
说明:(1)变量名必须是一个标识符,变量必须先声明后使用;
(2)变量一旦声明,系统就为它开辟一个相应类型的存储空间;
(3)变量所占用的存储空间的首地址称为该变量的地址。
P40,例。
函数printf作用3. 变量的赋值
格式:变量名=表达式;
功能:把=号右边表达式的值赋给=号左边的变量。
P40,例。
3.3    整型数据
3.3.1 整型常量的表示方法
整型常量常用三种形式表示:
(1)十进制:直接写;
(2)八进制:前加0;
(3)十六进制:前加0X或0x。
P41,例。
3.3.2 整型变量
1. 整型数据在内存中的存放形式
整型数据在内存中采用定点表示。
定点表示有原码、反码、补码之分,一般在机内使用补码。
原码:最高位为符号位,小数点定在最低位之后,数值用二进制表示。
反码:正数的反码与原码一样,负数的反码除符号位外各位取反。
补码:正数的补码与原码一样,负数的补码是反码加1。
例1:整数10的16位定点表示
因:(10)10=(1010)2
故:整数10的16位定点表示为
原码:
0    0    0    0    0    0    0    0    0    0    0    0    1    0    1    0
反码:
0    0    0    0    0    0    0    0    0    0    0    0    1    0    1    0
补码:
0    0    0    0    0    0    0    0    0    0    0    0    1    0    1    0