软件工程专业课复习资料 
第一章  C 语言设计的初步知识 
第一节  C 语言基本常识及标识符 
一、  基本概念 
1.  一个 C 程序总是从主函数开始执行。 
2.  函数体用“{”开始,用“}”结束。语句的数量不限。定义语句用分号“;”
结束。 
3.  C 程序中的每一条执行语句都必须用“;”结束,分号是 C 语句的一部分,
不是语句之间的分隔符。 
4.  C 语言源程序经过 C 语言编译程序编译之后生成一个后缀为.OBJ 目标文
件。最后还要由称为“连接程序”的软件,把此.OBJ 文件与 C 语言提供的
各种库函数连接起来生成一个后缀为.EXE 的可执行文件。 
 
 
 
源文件 
编译 
目标文件 
连接 
可执行文件 
.c 文件  
 
 
 
.obj 文件  
 
 
.exe 文件 
二、  标识符 
1、 标识符组成 
1)  标识符可用作变量名、符号名、函数名、数组名、文件名。 
2)  合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或
下划线。 
2、 标识符分类 
1)  关键字:C 语言规定了一批标识符,它们在程序中都代表着固定的含义,
不能另作它用
......(如 main、int),共 32 个(注意:全部是小写),见下表: 
auto 
break  case 
char 
const 
continu
defaul
e 
t 
do 
doubl
e 
else 
enum 
extern 
float 
for 
goto 
if 
int 
long 
main 
registe
r 
1 
return 
short 
signed 
sizeo
f 
选  择  决  定  未  来,  精  通  造  就  人  才   
stati
struc
switc
c 
t 
h 
typedef  union 
unsigne
d 
void 
while 
2)  预定义标识符:这些标识符也都有特定的含义,如 C 语言提供的库函数 
(如 printf、scanf)和预编译处理命令(如 define)等。C 语言语法允许把...
.........,.但这将使这些标识符失去系统规定的原意
这类标识符另作它用
..................,因此,
建议用户不将此类标识符另作它用。     
3)  用户标识符:用户标识符一般用来给变量、函数、数组或文件命名。 
第二节  常量、变量及数据类型 
一、 常量 
在程序运行过程中,其值不能被改变的量,称为常量。在 C 语言中,常量分为
整型常量,实型常量,字符常量和字符串常量。 
1、 整形常量 
在 C 语言中,整型常量可以用十进制、八进制和十六进制形式来表示。 
1)  十进制基本常量用一串连续的数字来表示。     
2)  八进制数用数字 0 开头(注意:不是字母 o)。因此,在 C 程序中不能在一个
十进制整数前面加前导零。 
3)  十六进制数用数字 0 和字母 x(或大写字母 X)开头。 
2、 实型常量 
在 C 语言中可以用两种形式表示一个实型常量。 
1) 小数形式 
即数学中常用的实数形式,由数字和小数点组成(注意:必须要有小数点),
如 0.123、.123、123.等都是合法的实型常量。 
2) 指数形式 
在数学中,一个数可以用幂的形式来表示,如 2.3026 可以表示为 0.23026
×101、2.3026×100、23.026×10-1 等形式。在 C 语言中,则以“e”或“E”后
跟一个整数来表示以 10 为底的幂数。2.3026 可以表示为 0.23026E1、
2.3026e0、23.026e-1。 
3、 字符常量 
1) 基本表示方式 
C 语言中,一个字符常量代表 ASCII 字符集中的一个字符,在程序中用单
2 
引号把一个字符括起来作为字符常量,如‘a’,‘4’等。 
软件工程专业课复习资料 
字符常量在内存中占一个字节,存放的是字符的 ASCII 代码值。C 语言规
定,所有字符常量都作为整型量来处理,在计算机内部,字符对应的整数值就
是 ASCII 码。 
2) 转义字符常量 
转义字符总是以一个反斜线开头后跟一个特定的字符,用来代表某一个
特定的 ASCII 字符,这些字符常量也必须括在一对单引号内。下表列出了 C
语言中的转义字符。 
表 1-2-1 
字 符  
形 式  
\n  回车换行 
功 能  
字 符  
形 式  
\”  双引号 
功 能  
\t  横向跳若干格(代表“TAB”键) 
\v  竖向跳格 
\b  退格符(代表“backspace”键) 
\\  反斜杠字符“\” 
\’  单引号(撇号)字符 
\ddd 
\xhh 
一至三位八进制数代表的一
个 ASCII 字符 
一至二位十六进制数代表的
一个 ASCII 字符 
\0  空值 
4、 字符串常量 
字符串常量是由双引号括起来的一串字符。在 C 语言中,系统在每个字符
串的最后自动加入一个字符--‘\0’作为字符串的结束标志。 
5、 符号常量 
可以用一个符号名来代表一个常量,但是这个符号名必须在程序中进行
特别的“指定”。 
例 1.2.1  计算圆面积。 
#include“stdio.h” 
#define  PI  3.14159   /* 定义符号名 PI 为 3.14159 */ 
main() 
{  float  r,s; 
   r=5.0;s=PI*r*r;printf(“s=%f\n”,s);} 
程序运行结果: s=78.539749 
程序中用#define 命令行(注意:不是语句,后面没有分号)定义 PI 代表
一串字符 3.14159,在对程序进行编译时,凡本程序中出现 PI 的地方,编译程
序均用 3.14159 这一串字符来替换,本程序中,可以把 PI 视为 3.14159 的替
身。这种符号名通常采用大写字母。用 define 进行定义时,必须用#号作为
3 
选  择  决  定  未  来,  精  通  造  就  人  才   
一行的开头,在#define 命令行的最后不得加分号结束。把#define 命令行中
定义的符号名称为符号常量。 
二、 变量 
象常量一样,变量也有类型的区分,如整型变量、实型变量、字符型变量等。
C 语言在定义变量的同时说明该变量的类型,系统在编译时就能根据定义及其类
型为它分配相应数量的存储空间。 
1、  整型变量 
1)  整型数据的分类 
整型常量和整型变量可以分为基本型(int)、短整型(short int)、长整型
(long int)和无符号型(unsigned)四种,其所占用的字节数和数值范围如表 1-2-2
所示。表中方括号内的单词可写也可不写,各单词的先后次序无关紧要。单词
signed 用来说明“有符号”,不写 signed 也隐含为有符号。 
表 1-2-2 
类 型 名 称 
占用字节数 
数 值 范 围 
[signed]int 
[signed] short [int] 
[signed] long [int] 
unsigned [int] 
unsigned short [int] 
unsigned long [int] 
2 
2 
4 
2 
2 
4 
-32768~ 32767 
-32768~ 32767 
-2147483648~ 2147483647 
0~ 65535 
0~ 65535 
0~ 4294967295 
若要表示一个长整型常量,则应该在一个整型常量后面加一个字母后缀 l 或
L,这些常量在内存中占四个字节。 
2)  整型变量的定义 
整型变量在使用前必须定义,其定义格式如下:  
int a; /*定义一个基本型整型变量 a*/ 
long int b; /*定义一个基本型整型变量 b*/ 
2、 实型变量   
C 语言中实型变量分为单精度型和双精度型两类,分别用类型名 float 和
double 进行定义。计算机系统为 float 类型的变量分配 4 个字节的存储单元,为
double 类型的变量分配 8 个字节的存储单元。 
4 
3、 字符变量 
软件工程专业课复习资料 
C 语言中,字符变量用关键字 char 进行定义;在定义的同时可以赋初值。 
字符变量在内存中占一个字节,字符变量可以存放 ASCII 字符集中的任何字
符。所以字符变量可以作为整型变量来处理,可以参与对整型变量所允许的任何
运算。 
例如:char c1,c2,c3;int k=5;c1=‘1’;c1++;c2=‘A’;c3=(c2+32+k)%25; 
 
 
第三节  运算符和表达式 
一、 基本的算术运算符 
1. 算术运算符组成:  
-、  
*、  
+、  
加、   减、   乘、   除、   求余运算符 
/、   % 
【说明】 
!  这些运算符需要两个运算对象,称为双目运算符。 
!  除求余运算符外,运算对象可以是整型,也可以是实型。 
!  求余运算符的运算对象只能是整型。在“%”运算符左侧的运算数为被除数,
右侧的运算数为除数,运算结果是两数相除后所得的余数。当运算量为负数
时,符号与被除数相同。例如 17%-3 的结果为 2,-19%4 的结果为-3。 
!  “+”和“-”也可用作单目运算符,运算符必须出现在运算量的左边。 
2. 运算符的优先级、结合性和算术表达式 
1)  算术运算符的优先级 
单目   
 
  双目            
 
    (  )、 +、 -、 *、 /、 %、 +、 - 
 
      
同级       同级       同级 
   
 高 -----------------------------------> 低 
               优  先  级 
2)  算术运算符和圆括号的结合性 
以上所列的运算符中,只有单目运算符“-”和“+”的结合性是从右到左,其
余运算符的结合性都是从左到右。 
3)  算术表达式 
5 
选  择  决  定  未  来,  精  通  造  就  人  才   
用算术运算符和一对圆括号将运算量连接起来的、符合 C 语法的表达式称为
算术表达式。运算对象可以是常量、变量和函数等。 
"    
二、 赋值 运算符和赋值表达式 
1. 赋值运算符和赋值表达式    
在 C 语言中,“=”号称为赋值运算符,由赋值运算符组成的表达式称为赋值表
达式,形式为: 变量名=表达式。 
2. 复合的赋值表达式 
在赋值运算符之前加上其它运算符可以构成复合赋值运算符,其中与算术运
算有关的复合运算符是:+=、-=、*=、/=、%=等。表达式 n+=1 的运算规则等价
于 n=n+1,表达式 n*=m+3 的运算规则等价于 n=n*(m+3)。 
三、 自加(++)、自减(--)运算符 
自加运算符“++”和自减运算符“--”的运算结果是使运算对象的值增 l 或
减 1。如 i++,相当于 i=i+1;i--,相当于 i=i-1。因此,自加或自减运算本身也是
一种赋值运算。 
【注意】 
"  ++、--运算符是单目运算符,运算对象可以是整型变量也可以是实型变量,
不能是常量和表达式,因此,如++3、(i+j)--等都是不合法的。 
"  ++(或--)在变量后面,先取变量原值作为表达式的值,再使变量的值增 1
(或减 1);++(或--)在变量前面,先使变量的值增 1(或减 1),再取变
量新值作为表达式的值,具体情况见下表(设有如下定义:int a=2;)。 
表达式 
表达式值 
变量 a 的值 
a++ 
++a 
a-- 
--a 
2 
3 
2 
1 
3 
3 
1 
1 
"  ++和--运算符的结合方向是“自右至左”。 
例如有一表达式-i++,负号运算符和自加运算符优先级相同;结合方向
“自右至左”,即相当于对表达式-(i++)进行运算。如果需要输出表达式-i++
的值,则应先取出 i 的值使用,输出-i++的值-3,然后使 i 增值为 4。 
6 
四、 逗号运算符和逗号表达式 
软件工程专业课复习资料 
 “,”是 C 语言提供的一种特殊运算符,用逗号将表达式连接起来的式子称为
逗号表达式。逗号表达式的一般形式为:表达式 1,表达式 2,…,表达式 n 
五、 关系运算 
1. C 语言中的逻辑值 
在 C 语言中,逻辑值只有两个, “真”和“假”,其中用非零值来表示“真”,
用零表示“假”。因此,对于任意一个表达式,如果值为 0 时,就代表一个“假”值;
只要值是非零,无论是正数还是负数,都代表一个“真”值。 
2. 关系运算符 
C 语言提供了 6 种关系运算符: 
 
<(小于) <= (小于或等于)  > (大于)   >= (大于或等于)    
 
!=(不等于) 
== (等于)   
---------------------------------------------------# 
 
 
 
 
 
 
 
 
 
 
     相 同 
3. 关系表达式及关系表达式的值 
 
 
 
 
 
 
高 
优
先
级 
低 
关系运算的结果得一个整数值:0 或 1。用零代表“假”,用非零代表“真”。
例如,若 a=10,b=16,表达式 a>=b 为“假”,值为 0;若 a=10,b=6 时,表达式 a>=b
为“真”,值为 1。 
六、 逻辑运算 
1. 逻辑运算符 
C 语言提供了三种逻辑运算符: 
① && 逻辑“与”  
② || 逻辑“或”  
③ ! 逻辑“非”     
【说明】 
!  &&和||是双目运算符,!是单目运算符,应该出现在运算对象的左边。逻辑运
算符具有自左向右的结合性. 
!  逻辑运算符的优先级次序是:!(逻辑非)级别最高,&&(逻辑与)次之,||(逻辑
或)最低。 
!  逻辑运算的对象可以是 C 语言中任意合法的表达式。 
7 
2. 逻辑表达式和逻辑表达式的值 
选  择  决  定  未  来,  精  通  造  就  人  才   
由逻辑运算符和运算对象所组成的表达式称为逻辑表达式。逻辑表达式的运
算结果或者为 1(“真”),或者为 0(“假”)。由逻辑运算符组成的逻辑表达式在
运算时,&&(与)运算相当于“乘”运算,||(或)运算相当于“加”运算。以 a&&b
为例,其运算规律如下表: 
a 取值 
b 取值 
&&运算 
||运算 
0 
0 
1 
1 
0 
1 
0 
1 
0 
0 
0 
1 
0 
1 
1 
1 
 
“非”运算规律:对“假”取非,结果为“真” 
 
  对“真”取非,结果为“假” 
 
 
 
【注意】 
"  数学关系式 0