内容正文:
举一反三考点练
《C语言程序设计》C语言的概述-讲义
1. 了解宏定义和文件包含;
2. 掌握用户标识符的命名规则;
3. 了解 C 语言的源程序结构;
知识点一 宏定义和文件包含
一、宏定义
1. 宏定义的概念
宏定义是C语言预处理功能之一,它允许我们定义一个标识符来代表一个字符串。在程序编译之前,预处理程序会将宏名替换为所定义的字符串。
2. 宏定义的语法
宏定义使用#define指令,其基本语法格式如下:
#define 宏名 替换文本
例如:
#define PI 3.14159
3. 宏定义的特点
(1)宏定义不是语句,末尾不需要加分号。
(2)宏名一般使用大写字母表示,以便与变量名区分。
(3)宏定义可以包含其他宏名。
(4)宏定义可以嵌套使用。
4. 带参数的宏定义
带参数的宏定义类似于函数调用,但其本质是字符串替换。其语法格式如下:
#define 宏名(参数列表) 替换文本
例如:
#define MAX(a, b) ((a) > (b) ? (a) : (b))
5. 宏定义的副作用
宏定义可能会导致一些意想不到的副作用,如:
(1)运算符优先级问题。
(2)参数重复计算问题。
(3)类型检查不严格。
二、文件包含
1. 文件包含的概念
文件包含是指在一个源文件中,将另一个源文件的内容包含进来。这可以通过#include指令实现。
2. 文件包含的语法
文件包含使用#include指令,其基本语法格式如下:
#include <文件名>
或者
#include "文件名"
尖括号表示在系统指定的目录下查找文件,双引号表示在当前目录下查找文件。
3. 文件包含的作用
(1)简化程序结构,提高代码复用性。
(2)将常用的宏定义、类型声明、函数声明等集中在一个头文件中,便于管理和维护。
4. 文件包含的注意事项
(1)避免重复包含同一头文件,可以使用条件编译指令#ifndef、#define、#endif来实现。
(2)头文件中不应包含可执行代码,只包含声明和宏定义。
1. (单项选择题)下列关于宏定义和文件包含的说法,错误的是?( )
A. 宏定义不是语句,因此在#define指令后不需要加分号
B. 带参数的宏定义在预处理时会发生参数的值替换,类似于函数调用
C. 使用#include <文件名>时,预处理器会在系统指定的目录下查找文件
D. 在头文件中,应避免包含可执行代码,只包含宏定义、类型声明和函数声明
【答案】B
【解析】带参数的宏定义在预处理时发生的是字符串替换,而不是参数值的替换,它不会进行参数的类型检查或计算。
【要点】考查宏定义和文件包含的细节,特别是宏定义的工作原理和文件包含的正确使用方法。
1. (单项选择题)下列关于带参数宏定义的描述,正确的是?( )
A. 带参数宏定义可以像函数一样执行
B. 带参数宏定义在编译阶段进行参数替换
C. 带参数宏定义不会产生副作用
D. 带参数宏定义的参数不需要括号保护
【答案】B
【解析】带参数宏定义在预处理阶段进行参数替换,可能会产生副作用。
【要点】考查带参数宏定义的特点。
2. (单项选择题)下列关于文件包含的描述,错误的是?( )
A. 文件包含可以简化程序结构,提高代码复用性
B. 文件包含使用#include指令
C. 文件包含时,尖括号表示在当前目录下查找文件
D. 文件包含可以避免重复编写相同的代码
【答案】C
【解析】文件包含时,尖括号表示在系统指定的目录下查找文件。
【要点】考查文件包含的基本概念。
3. (判断题)宏定义可以嵌套使用。( )
【答案】√
【解析】宏定义确实可以嵌套使用,即在一个宏定义中包含另一个宏名。
【要点】考查宏定义的嵌套使用。
1. (判断题)头文件中可以包含可执行代码。( )
【答案】×
【解析】头文件中不应包含可执行代码,只包含声明和宏定义。
【要点】考查头文件的使用规范。
2. (填空题)宏定义的基本语法格式为 #define 宏名 _______ 。
【答案】替换文本
【解析】宏定义的基本语法格式是 #define 宏名 替换文本。
【要点】考查宏定义的语法格式。
3. (填空题)在C语言中,使用 _______ 指令来实现文件包含。
【答案】#include
【解析】在C语言中,使用 #include 指令来实现文件包含。
【要点】考查文件包含的指令。
· 宏定义是C语言预处理的一种功能,用于在编译前进行文本替换,不涉及类型检查和内存分配。宏定义通过#define指令实现,宏名通常使用大写字母表示,以区别于变量名。带参数的宏定义可以像函数一样使用,但不会进行参数类型检查,且可能产生副作用。
· 文件包含通过#include指令实现,允许将一个源文件的内容嵌入到另一个源文件中,提高代码复用性和简化程序结构。文件包含可以使用尖括号<>或双引号""来指定包含的头文件,尖括号用于系统头文件,双引号用于用户自定义头文件。
· 宏定义和文件包含的注意事项:避免在宏定义中使用表达式可能带来的副作用,如使用宏时参数被多次求值。在头文件中使用条件编译指令(如#ifndef、#define、#endif)来防止头文件内容被重复包含。
· 宏定义与函数的区别:宏定义在预处理阶段进行文本替换,而函数在编译后的运行阶段进行调用。宏定义不会进行参数类型检查,函数则会进行参数类型检查。
知识点二 用户标识符的命名规则
1. 标识符的定义
标识符是C语言中用于表示变量、函数、数组、指针、结构体、联合体、枚举类型等名称的字符序列。标识符用于给程序中的实体命名,以便在程序中引用这些实体。
2. 标识符的命名规则
(1)合法性:标识符由字母(包括大写和小写)、数字和下划线(_)组成,且必须以字母或下划线开头。
(2)区分大小写:C语言是区分大小写的,因此,大写字母和小写字母被认为是不同的字符。例如,变量名count和Count是两个不同的标识符。
(3)长度限制:标识符的长度通常没有具体限制,但不同的编译器可能有不同的规定。一般情况下,标识符的长度不应超过31个字符。
(4)关键字不能作为标识符:C语言中有一些关键字,如if、else、int、float等,它们具有特定的含义,不能用作标识符。
3. 合理命名
(1)见名知意:尽量选择具有描述性的名称,使程序更易于理解和维护。例如,用sum表示求和的变量,用average表示平均值。
(2)命名规范:以下是一些常见的命名规范:
变量名一般采用小写字母,如count、sum等;
函数名通常采用大写字母开头的驼峰命名法,如CalculateSum、PrintMessage等;
常量名一般采用大写字母,并用下划线分隔单词,如MAX_VALUE、MIN_DISTANCE等;
结构体、联合体和枚举类型的名称一般采用大写字母开头的驼峰命名法,如Student、ColorType等。
4. 注意事项
(1)避免使用拼音或缩写:尽量使用完整的英文单词或词组,避免使用拼音或缩写,以提高程序的可读性。
(2)避免使用特殊字符:除了下划线,不要在标识符中使用其他特殊字符,如@、#、$等。
(3)避免使用过于相似的名称:避免使用容易混淆的标识符,如num1和numl,以免在阅读和维护程序时产生误解。
1. (单项选择题)下列关于C语言用户标识符命名规则的说法,错误的是?( )
A. 标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线
B. C语言的关键字,如if、else、int等,不能用作标识符
C. 标识符的长度在所有编译器中都有严格的限制,不得超过31个字符
D. 合理的命名规范要求变量名采用小写字母,函数名采用大写字母开头的驼峰命名法
【答案】C
【解析】标识符的长度在不同的编译器中可能有不同的规定,但通常标识符的长度不应超过31个字符,并不是所有编译器都有严格的限制。
【要点】考查C语言标识符的命名规则,特别是关于标识符长度的理解。
1. (单项选择题)以下哪个标识符是合法的C语言变量名?( )
A. 3num B. @var C. _temperature D. int
【答案】C
【解析】合法的标识符必须以字母或下划线开头,且不能是C语言的关键字。
【要点】考查合法标识符的命名。
2. (单项选择题)以下关于C语言标识符区分大小写的说法,正确的是?( )
A. 标识符不区分大小写
B. 标识符区分大小写,但关键字不区分大小写
C. 标识符和关键字都区分大小写
D. 标识符区分大小写,关键字不区分大小写
【答案】C
【解析】C语言中,标识符和关键字都是区分大小写的。
【要点】考查标识符的大小写敏感性。
3. (判断题)C语言中,标识符的长度可以超过31个字符。( )
【答案】×
【解析】虽然标识符的长度没有具体限制,但一般情况下,标识符的长度不应超过31个字符。
【要点】考查标识符长度的限制。
1. (判断题)在C语言中,关键字可以用来作为变量名。( )
【答案】×
【解析】C语言的关键字具有特定的含义,不能用作标识符。
【要点】考查关键字的用途。
2. (填空题)在C语言中,合法的标识符可以由______、______和______组成,且必须以______或______开头。
【答案】字母、数字、下划线、字母、下划线
【解析】合法的标识符由字母、数字和下划线组成,且必须以字母或下划线开头。
【要点】考查标识符的组成和命名规则。
3. (填空题)C语言中的关键字,如______、______、______等,不能用作标识符。
【答案】if、else、int
【解析】C语言的关键字具有特定的含义,不能用作标识符。
【要点】考查C语言关键字的用途。
· 标识符合法性:C语言中的标识符必须由字母(大写或小写)、数字和下划线组成,且必须以字母或下划线开头,不能以数字开头。
· 区分大小写:C语言的标识符是区分大小写的,这意味着大写字母和小写字母被认为是不同的字符,因此,变量名Var和var是两个不同的标识符。
· 关键字限制:C语言的关键字,如if、else、int等,具有特定的编程意义,不能用作标识符,即不能将关键字作为变量名、函数名等。
· 命名规范:为了提高程序的可读性和易于维护,建议使用有意义的英文单词或词组作为标识符,并遵循一定的命名规范,如变量名使用小驼峰命名法,函数名使用大驼峰命名法等。
知识点三 C 语言的源程序结构
1. 程序组成部分
C语言源程序主要由以下几部分组成:
(1)预处理指令:以符号“#”开头,用于指示编译器在编译前进行一些预处理操作,如包含头文件、宏定义等。
(2)全局声明:在函数外部声明的变量称为全局变量,它们的生命周期贯穿整个程序运行过程。
(3)函数定义:C语言程序的主体是函数,包括主函数(main函数)和其他自定义函数。
2. 函数
(1)主函数:每个C语言程序都必须有一个名为main的函数,程序执行从main函数开始,并在main函数结束时结束。
(2)自定义函数:根据实际需求,可以定义其他函数来辅助主函数完成任务。自定义函数分为有参函数和无参函数。
3. main函数
main函数是C语言程序的入口,其基本形式如下:
int main(int argc, char *argv[]) {
// 程序主体
return 0;
}
或者更简单的形式:
int main() {
// 程序主体
return 0;
}
4. 注释
注释用于解释程序中的代码,提高程序的可读性。C语言支持以下两种注释方式:
(1)单行注释:以“//”开头,注释内容直到行末。
(2)多行注释:以“/”开始,以“/”结束,可以跨越多行。
5. 标识符
标识符是用于表示变量、函数、数组等名称的字符串。C语言中标识符的命名规则如下:
(1)由字母、数字和下划线组成,且不能以数字开头。
(2)大小写敏感,即变量名a和A是不同的变量。
(3)不能使用C语言的关键字作为标识符。
6. 关键字
关键字是C语言预先定义好的具有特定意义的单词,用于表示数据类型、控制语句等。例如:int、float、if、else、while等。
7. 分隔符
分隔符用于分隔程序中的各个组成部分,包括以下几种:
(1)逗号(,):用于分隔函数参数、变量声明等。
(2)分号(;):用于表示语句结束。
(3)括号:圆括号(())用于函数调用、表达式分组等;花括号({})用于定义代码块。
8. 数据类型
C语言提供了多种数据类型,用于定义变量、函数返回值等。基本数据类型包括:
(1)整型(int、short、long等)
(2)浮点型(float、double等)
(3)字符型(char)
(4)枚举类型(enum)
9. 变量
变量是存储数据的容器,具有数据类型和名称。变量在使用前必须声明,并在声明时可以初始化。
10. 语句
C语言程序由一系列语句组成,每个语句以分号(;)结尾。常见的语句包括:
(1)声明语句:用于声明变量、函数等。
(2)赋值语句:用于给变量赋值。
(3)控制语句:用于实现程序流程控制,如if、for、while等。
(4)函数调用语句:用于调用函数。
1. (单项选择题)下列关于C语言源程序结构的说法,错误的是?( )
A. C语言源程序必须包含至少一个main函数作为程序的入口
B. 在C语言中,所有变量必须在使用之前进行声明,但全局变量可以在函数外部声明
C. 预处理指令必须以符号“#”开头,且可以出现在源程序的任何位置
D. C语言中的注释可以出现在代码中的任何位置,包括在预处理指令之后
【答案】D
【解析】C语言中的注释不能出现在预处理指令之后,因为预处理指令是在编译前处理的,而注释在编译时会被忽略,因此预处理指令之后不能有注释。
【要点】考查C语言源程序的基本结构和编译预处理的概念。
1. (单项选择题)下列关于C语言注释的说法,正确的是?( )
A. 单行注释以"/"开始,以"/"结束
B. 多行注释以"//"开始,直到行末
C. 注释可以出现在任何位置,包括预处理指令中
D. 注释不能出现在字符串中
【答案】D
【解析】注释不能出现在字符串中,但可以出现在预处理指令中。
【要点】考查C语言注释的使用规则。
2. (单项选择题)下列关于C语言main函数的说法,错误的是?( )
A. main函数是C语言程序的入口
B. main函数必须声明为void类型
C. main函数可以没有参数
D. main函数可以返回一个整数值
【答案】B
【解析】main函数可以声明为int类型,并返回一个整数值。
【要点】考查C语言main函数的基本知识。
3. (判断题)C语言中的关键字可以用于定义变量名。( )
【答案】×
【解析】关键字是C语言预定义的,不能用于定义变量名。
【要点】考查C语言关键字的用途。
1. (判断题)在C语言中,每个语句的结尾都必须使用分号。( )
【答案】√
【解析】C语言中,除了声明语句和代码块的花括号,其他语句的结尾都需要使用分号。
【要点】考查C语言语句的基本格式。
2. (填空题)C语言中,用于表示单行注释的是__________。
【答案】//
【解析】"//"用于表示单行注释。
【要点】考查C语言注释的表示方法。
3. (填空题)在C语言中,定义一个整型变量需要使用__________关键字。
【答案】int
【解析】int关键字用于定义整型变量。
【要点】考查C语言整型变量的定义。
· C语言源程序结构要点:1.C语言源程序主要由预处理指令、全局声明和函数定义组成。2.程序的入口是main函数,每个程序都必须有一个main函数。
· 标识符和关键字的使用规则:1.标识符用于变量、函数、数组等的命名,可以由字母、数字和下划线组成,但不能以数字开头,且区分大小写。2.关键字是C语言预定义的,具有特定含义,不能用作标识符。
· 注释和语句格式:1.C语言中的注释分为单行注释和多行注释,单行注释以"//"开始,多行注释以"/"开始并以"/"结束。2.语句是程序的基本执行单位,每个语句必须以分号(;)结尾。
· 变量的声明和定义:1.变量在使用前必须声明,声明时可以指定数据类型,如int、float等。2.变量可以在声明时进行初始化,赋予一个初始值。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$