本书依据《国家中长期教育改革和发展纲要(20202035年)》的指导精神,结合新工科人才培养要求及高等学校的教学特点编写而成。全书共分为11章,从C语言程序设计概述讲起,依次讲述数据类型、运算符与表达式、三种基本结构程序设计、数组、函数、编译预处理、指针、结构体与共用体和文件等。本书从培养学生的实际编程能力出发,内容全面,重点突出,例题和习题丰富,书中所有示例程序均上机调式运行并给出结果,程序遵循标准化的编程风格,便于学生理解。
每章提供课前导读、学习目标、教学要求和思维导图,并给出每一章节具体的教学要求和能力要求,便于读者阅读
郭晓利,从事科研、教学工作32年,吉林省拔尖创新人才,三级教授,硕士生导师。讲授《C语言程序设计》、《数据结构》、《计算机二级》等课程。为《C语言程序设计》省级优秀课负责人、《数据结构》省级优秀课主讲教师。主持省级教改项目4项(排名1),校教改项目3项(排名1)。参加省级教改项目5项。获吉林省教学成果奖2项,省教育技术成果奖5项。 第d一主编编写《C语言程序设计》、《C语言简明教程》、《数据结构实训与习题解析》、《计算机网络基础》等教材,其中《数据结构实训与习题解析》获吉林省优秀教材三等奖(排名1)。主持吉林省科技厅项目4项(排名1),吉林省教育厅科研项目2项(排名1),横向项目2项(排名1)。参加国家自然科学基金项目1项(排名3)。获吉林省科学技术进步二等奖3项(其中1项排名1),三等奖3项(其中2项排名1),市科学技术进步一等奖2项(排名1)。申请发明专利3项,软件著作权8项。发表论文24篇,其中EI检索10篇。
前言
第1 章 概述1
1.1 程序示例2
1.1.1 C 语言程序的结构3
1.1.2 C 语言程序的发展史3
1.1.3 C 语言程序的特点3
1.2 C 语言的基本符号与关键字4
1.2.1 字符集4
1.2.2 关键字4
1.2.3 用户标识符5
1.2.4 ASCII 字符集6
1.3 算法及其表示6
1.3.1 算法的概念和特征6
1.3.2 三种基本程序结构6
1.3.3 算法的表示7
习题9
第2 章 数据类型、运算符与表达式 12
2.1 问题提出与程序示例 13
2.2 数据类型 14
2.3 常量与变量 14
2.3.1 常量 14
2.3.2 变量 16
2.4 运算符与表达式 19
2.4.1 算术运算符与算术表达式 19
2.4.2 关系运算符和关系表达式 21
2.4.3 逻辑运算符和逻辑表达式 22
2.4.4 赋值运算符和赋值表达式 22
2.4.5 条件运算符和条件表达式 23
2.4.6 逗号运算符和逗号表达式 24
2.4.7 位运算符 24
习题 25
第3 章 顺序结构程序设计 29
3.1 问题提出与程序示例 30
3.2 C 语言的基本语句 31
3.3 字符数据的输入输出 32
3.3.1 字符输出函数putchar( ) 32
3.3.2 字符输入函数getchar( ) 32
3.4 格式输入与输出 33
3.4.1 格式输出函数printf( ) 33
3.4.2 格式输入函数scanf( ) 37
3.5 顺序结构程序设计举例 39
习题 40
第4 章 选择结构程序设计 45
4.1 问题提出与程序示例 46
4.2 if 语句 47
4.2.1 if 语句 47
4.2.2 if 语句的嵌套 50
4.3 switch 语句 51
4.4 选择结构程序应用举例 53
习题 56
第5 章 循环结构程序设计 64
5.1 问题提出与程序示例 65
5.2 goto 语句 66
5.3 while 语句 66
5.4 do…while 语句 68
5.5 for 语句 69
5.6 循环的嵌套 71
5.7 转移控制语句 72
5.7.1 break 语句 72
5.7.2 continue 语句 72
5.8 循环结构程序应用举例 73
习题 78
第6 章 数组 85
6.1 问题提出与程序示例 86
6.2 一维数组 87
6.2.1 一维数组的定义 87
6.2.2 一维数组的初始化 87
6.2.3 一维数组的引用 88
6.3 二维数组 91
6.3.1 二维数组的定义 91
6.3.2 二维数组的初始化 92
6.3.3 二维数组的引用 92
6.4 字符数组 95
6.4.1 字符数组的定义和初始化 95
6.4.2 字符数组的输入/输出 96
6.4.3 字符串处理函数 97
习题101
第7 章 函数108
7.1 问题提出与程序示例109
7.2 函数的定义与调用 110
7.2.1 函数的定义 110
7.2.2 函数的返回值 111
7.2.3 函数的说明 111
7.2.4 函数的调用 112
7.3 函数的嵌套调用和递归调用 113
7.3.1 函数的嵌套调用 113
7.3.2 函数的递归调用 115
7.4 变量的作用域与存储类型 116
7.4.1 局部变量的作用域 117
7.4.2 全局变量的作用域 118
7.4.3 变量的存储类型 119
习题121
第8 章 编译预处理128
8.1 问题提出与程序示例129
8.2 宏定义129
8.2.1 无参宏定义129
8.2.2 带参宏定义130
8.3 文件包含131
8.4 条件编译132
习题134
第9 章 指针137
9.1 问题提出与程序示例138
9.2 指针与指针变量139
9.2.1 指针的定义139
9.2.2 指针变量的定义139
9.2.3 指针变量的使用140
9.3 指针和数组141
9.3.1 指针与一维数组141
9.3.2 指针与二维数组145
9.4 指针和字符串147
9.5 指针与函数148
9.5.1 指针作为函数的返回值148
9.5.2 指向函数的指针变量149
9.6 指针数组与指向指针的指针变量150
9.6.1 指针数组150
9.6.2 指向指针的指针变量150
9.6.3 主函数main( )的形参151
习题152
第10 章 结构体与共用体158
10.1 问题提出与程序示例159
10.2 结构体160
10.2.1 结构体类型与结构体变量的定义160
10.2.2 结构体变量的初始化与引用161
10.2.3 结构体数组163
10.2.4 结构体类型指针变量164
10.3 链表165
10.4 共用体171
10.4.1 共用体类型与变量的定义171
10.4.2 共用体变量的引用172
10.5 枚举类型173
10.5.1 枚举类型与变量的定义173
10.5.2 枚举类型变量的使用174
10.6 自定义数据类型175
习题175
第11 章 文件180
11.1 问题提出与程序示例181
11.2 文件概述182
11.3 文件的打开与关闭183
11.3.1 文件打开函数fopen( ) 183
11.3.2 文件关闭函数fclose( ) 184
11.4 文件的读/写184
11.4.1 读/写字符函数fgetc( )和fputc( ) 184
11.4.2 读/写字符串函数fgets( )和fputs( )186
11.4.3 数据块读/写函数fread( )和fwrite( ) 188
11.4.4 格式化读/写函数fscanf( )和fprintf( )189
11.5 文件的定位190
11.5.1 rewind( )函数190
11.5.2 fseek( )函数191
11.5.3 ftell( )函数192
11.6 文件的出错检测192
11.6.1 ferror( )函数192
11.6.2 clearerr( )函数192
习题193
附录A 常用字符与ASCII 代码对照表197
附录B 运算符的优先级及其结合性198
附录C 常用的C 库函数199
参考文献202