C语言Chaper02
第2章 C语言程序的基本构成与基本结构
2.1 C语言程序的基本构成
图2-1-1 C语言程序的基本构成
2.1.1 主函数
图2-1-2 主函数
main是C语言主函数的函数名称,也是C语言中唯一的一个不能由用户命名的用户函数名;
C语言语句以分号“;”作为结束符,分号前无任何内容时称为空语句;
C语言的任何表达式都可以作为C语言语句使用,但要注意是否有实际意义;
C语言函数(包括主函数)只能由一个语句构成,即:一个复合语句构成。但复合语句中可以包含语句或复合语句,即:复合语句可以采用递归方式定义。每个复合语句构成一个完整的程序段,复合语句中的复合语句又称为分程序结构;
C语言语句可以不分行书写,也可以分行书写(一行一语句),建议采用分行书写;
除了字符常量,字符串常量、宏名外,C语言程序一般用小写字母书写;
举例说明分程序对自动变量的屏蔽作用。
2.1.2 程序注释
1. 程序注释的一般形式
图3-1-3 程序注释
2. 程序注释的位置
程序注释可以作为注释行加在程序的任何位置,也可以作为行注释加在语句的后面。
程序注释不作为程序的正式内容处理,C编译系统不会理会程序注释。
2.1.3 程序完成的基本任务与标准I/O函数
1. 程序完成的基本任务
图2-1-4 程序完成的基本任务
1) 信息处理由赋值表达式完成;
2) 信息输入输出由I/O函数完成。
2. getchar()函数与putchar()函数
1) getch():键盘输入函数,用于字符输入;
2) putch():屏幕输出函数,用于字符输出。
详见书中C库函数(309页)。
3. scanf()函数与printf()函数
1) scanf()函数
a. scanf()的功能:键盘输入。
b. scanf()函数的一般使用方式:
scanf(,)
c. 简单的格式说明:%格式说明符
d. 变量地址的表达方式:指针变量或&变量名(取址运算表达式)
e. 格式说明字符串中的非格式说明符在键盘输入时要原样输入。
f. 复杂的格式说明:
% [*] [m] [l/h]格式字符
详见书中49页。
2) printf()函数:屏幕输出函数
a. printf()函数的功能:屏幕输出。
b. printf()函数的一般使用方式:
printf(,)
c. 简单格式说明:%格式说明符
d. 输出控制字符:、\n,\t等等。
e. 格式说明字符串中的非格式说明符在屏幕输出时会原样输出。
f. 复杂的格式说明:
%[-] [0] [m] [.n] [l/h] 格式说明符
详见书中44页。
4.编译预处理
C语言编译系统对C语言程序进行编译时需要两步:
首先把带有编译预处理命令的C语言源程序翻译成不带有编译预处理命令的C语言源程序,然后再把不带编译预处理命令的C语言源程序翻译成机器指令代码。C语言具有一组完善的编译处理命令,包括宏代换、文件包含、条件编译等,C语言程序中用#号开头的都是编译预处理命令。
1) 宏代换
a. 简单宏定义
图2-1-5简单宏定义
b. 带参宏定义
图2-1-6 带参宏定义
c. 取消定义
图2-1-7 取消定义
2) 文件包含
对于大量的宏定义与其它类型的定义,可以用一个称为包含的文件单独存在磁盘上(*.h)- 头包含文件。然后在程序中用一个调用头文件的命令代替就可以了。这样做可以使程序变得小巧玲珑。
图2-1-8 文件包含
系统包含文件是由C语言编译系统提供的。这样做主要是为用户调用库函数提供方便,用户在调用库函数时,必须把相应的包含文件包含进来。
3) 条件编译
a. #ifdef型条件编译
图2-1-9 #ifdef型条件编译
举例说明条件编译的使用,主要是为了提高程序的可移植性。
例如:有的C语言没有char型变量,则可以利用条件编译把char型变量定义换成int型。
b. #ifndef型条件编译
图2-1-10 #ifndef型条件编译
c. #if型条件编译
图2-1-11 #if型条件编译
2.2 C语言程序的基本结构 - 结构化程序设计
C语言程序完成的基本任务包括信息输入、信息处理、信息输出等三项,完成三项基本任务采用的基本程序结构为顺序结构、选择结构、循环结构,采用三种基本结构进行程序设计的方法,称为结构化程序设计方法。
2.2.1 选择结构程序设计
1. 无条件分支语句
1) 语句结构
图2-2-1无条件分支语句
2) 标号语句
图2-2-2 标号语句
break动词和continue动词。
2. 条件分支语句 - 单分支if语句
图2-2-3单分支if语句
如果表达式