本书是为将C语言作为入门语言的程序设计课程编写的教材,目的是培养学生的程序设计基本能力和创新能力以及良好的程序设计风格。
本书以程序设计为主线,以编程应用为驱动,采取循序渐进、通俗易懂的方法,主要讲解程序设计的基本思想、方法,同时介绍了C语言相关的语法知识。本书以全国计算机等级考试新需求为出发点,教学环境为VisualC++6.0平台。
全书共11章。第1章介绍C语言程序的基本结构、运行C语言程序的步骤与程序开发环境以及算法的表示;第2章介绍C语言的数据类型、运算符与表达式;第3章~第5章介绍基本控制结构组成,包括顺序、选择和循环结构;第6章介绍数组,包括一维数组、二维数组和字符数组;第7章介绍函数;第8章介绍指针;第9章介绍结构体与共用体;第10章介绍文件;第11章介绍C语言课程设计案例。
本书可作为高等学校“C语言程序设计”课程的教学用书,也可作为自学C语言和参加全国计算机等级考试的参考书。
程序设计是高等学校计算机基础课程,它以编程语言为平台,介绍程序设计的基本思想和方法。
C语言是国内外广泛使用的一种程序设计语言,它除了具有强大的高级语言功能外,还具备低级语言的大部分功能,已成为高校程序设计课程的首选语言。C语言程序设计是一门实践性很强的课程,它的教学重点应以程序设计为主,以介绍C语言相关的语法知识为辅,目的是培养学生的程序设计基本能力和良好的程序设计风格以及创新能力。
本书以程序设计为主线,以编程应用为驱动,采取循序渐进、通俗易懂的方法,主要讲解程序设计的基本思想和方法,同时介绍C语言相关的语法知识。本书以全国计算机等级考试新需求为出发点,教学环境为VisualC++6.0平台。
全书共11章。第1章介绍C语言程序的基本结构、运行C语言程序的步骤与程序开发环境以及算法的表示;第2章介绍C语言的数据类型、运算符与表达式;第3章~第5章介绍基本控制结构组成,包括顺序、选择和循环结构;第6章介绍数组,包括一维数组、二维数组和字符数组;第7章介绍函数;第8章介绍指针;第9章介绍结构体与共用体;第10章介绍文件;第11章介绍C语言课程设计案例。
本书由徐立辉进行整体策划并统稿,由徐立辉、刘冬莉主编。其中第1、8章和附录由徐立辉编写,第2章由许楠编写,第3和第4章由刘冬莉编写,第5和第6章由冯毅宏编写,第7和第10章由刘俊岭、何彤编写,第9和第11章由何凯编写。
课堂教学使学生掌握程序设计的基本思想和方法,而要深刻理解还必须经过上机实验和大量的习题训练,以便学到课堂上无法学到的编程方法、程序调试方法和技巧。因此,我们还编写了配套的实验指导及习题,其中实验内容主要以VisualC++6.0为编程环境,由12个实验组成,每个实验都精心设计了编程样例或者调试样例、程序填空题、程序修改题和程序设计题。实验的项目按照C语言知识点展开,深入浅出,引导学生逐渐理解C语言程序设计的思想、方法和调试技巧;并且采用全国计算机等级考试的题型,具有一定的实用性。习题部分精心选配了C语言教学内容的课外习题,涵盖了C语言的各种题型,各类数据类型、程序结构和典型算法。
随着计算机科学的不断发展,计算机教学的研究和改革也在不断深入。希望在从事计算机教学的各位同仁的共同努力下,不断提高我国高等学校C语言程序设计课程的教学水平。
由于作者水平有限,书中难免存在疏漏和不足之处,敬请读者批评指正。
编者2016年10月
第1章C程序设计概述1
1.1程序设计的基本概念1
1.1.1程序1
1.1.2程序设计2
1.1.3程序设计语言2
1.2C语言简介4
1.2.1C语言的发展历史4
1.2.2C语言的特点5
1.2.3如何学习C语言6
1.3C语言程序的基本结构7
1.3.1简单的C语言程序7
1.3.2C语言程序的编写要求10
1.4运行C语言程序的步骤与程序开发环境11
1.4.1运行C语言程序的步骤11
1.4.2开发环境Microsoft Visual C++6.012
1.5算法20
1.5.1算法概述20
1.5.2算法的表示22
1.6结构化程序设计的思想和方法24
习题125
第2章数据类型、运算符与表达式27
2.1标识符、常量与变量27
2.1.1标识符27
2.1.2常量28
2.1.3变量30
2.2C语言的数据类型31
2.3基本数据类型32
2.3.1整型数据32
2.3.2实型数据36
2.3.3字符型数据38
2.4运算符和表达式41
2.4.1C运算符与表达式简介41
2.4.2算术运算符和算术表达式42
2.4.3赋值运算符和赋值表达式48
2.4.4逗号运算符和逗号表达式50
2.5综合程序举例51
习题254
第3章顺序结构55
3.1C程序的语句55
3.1.1C语句概述55
3.1.2赋值语句56
3.2数据输出函数57
3.2.1printf函数57
3.2.2putchar函数60
3.3数据输入函数61
3.3.1scanf函数61
3.3.2getchar函数65
3.4标准库函数65
3.5顺序结构程序举例67
习题371
[1]〖3〗C语言程序设计目录〖3〗[3]第4章选择结构72
4.1关系运算72
4.1.1关系运算符72
4.1.2关系表达式72
4.2逻辑运算73
4.2.1逻辑运算符73
4.2.2逻辑表达式73
4.3if语句75
4.3.1if语句和选择结构75
4.3.2if语句的嵌套79
4.3.3条件运算符和条件表达式81
4.4switch语句和break语句83
4.5选择结构程序举例85
习题489
第5章循环结构91
5.1循环语句91
5.1.1while语句91
5.1.2do...while语句92
5.1.3for语句94
5.1.4用goto语句和if语句构成循环96
5.2循环的嵌套97
5.3结束循环的语句99
5.3.1break语句99
5.3.2continue语句100
5.4循环结构应用举例100
习题5108
第6章数组110
6.1数组的概念110
6.2一维数组110
6.2.1一维数组的定义110
6.2.2一维数组的引用112
6.2.3一维数组的初始化113
6.2.4一维数组应用举例114
6.3二维数组119
6.3.1二维数组的定义119
6.3.2二维数组的引用121
6.3.3二维数组的初始化121
6.3.4二维数组应用举例123
6.4字符数组128
6.4.1字符数组的定义128
6.4.2字符数组的初始化128
6.4.3字符数组的引用129
6.4.4字符串130
6.4.5字符数组的输入与输出130
6.4.6字符串处理函数132
6.4.7字符数组应用举例135
习题6138
第7章函数140
7.1函数的概念140
7.2定义函数的一般形式141
7.3函数的值和函数参数143
7.3.1实际参数和形式参数143
7.3.2函数的返回值144
7.4函数的调用形式146
7.4.1调用函数的一般形式146
7.4.2调用函数的方式147
7.4.3对被调用函数的原型声明147
7.5函数的嵌套调用149
7.6函数的递归调用152
7.7数组作为函数的参数155
7.7.1使用数组元素作为实参155
7.7.2使用数组名作为函数的形参和实参155
7.7.3使用二维数组名作为函数的参数157
7.8局部变量和全局变量158
7.8.1局部变量158
7.8.2全局变量159
7.9变量的存储类别161
7.9.1静态存储方式和动态存储方式161
7.9.2自动变量162
7.9.3静态变量162
7.9.4寄存器变量164
7.9.5外部变量165
7.9.6用static声明全局变量167
7.10内部函数和外部函数167
7.10.1内部函数168
7.10.2外部函数168
7.11编译预处理168
7.11.1宏定义169
7.11.2文件包含172
7.11.3条件编译174
习题7175
第8章指针177
8.1指针的基本概念177
8.1.1变量的地址177
8.1.2指针变量178
8.2指针变量的定义与引用178
8.2.1指针变量的定义与初始化178
8.2.2指针变量的引用179
8.2.3使用指针变量作为函数的参数181
8.3指针的运算183
8.3.1指针变量的赋值运算183
8.3.2指针变量的算术运算185
8.3.3指针变量的关系运算186
8.4指针与数组186
8.4.1指向一维数组元素的指针186
8.4.2使用指针引用一维数组元素187
8.4.3使用一维数组名或指向一维数组的指针作为函数的参数188
8.4.4指针与二维数组192
8.4.5指向二维数组元素的指针193
8.4.6使用指向二维数组的指针作为函数的参数195
8.5指向字符串的指针变量196
8.5.1字符串的表示形式196
8.5.2使用指向字符串的指针作为函数的参数199
8.5.3字符指针变量与字符数组的区别200
8.6指针数组201
8.6.1指针数组的一般定义形式201
8.6.2指针数组的应用202
8.7指针数组作为main函数的形参204
8.7.1带参数的main函数的一般形式204
8.7.2命令行参数的应用206
8.8指向指针的指针变量207
8.8.1指向指针的指针变量的一般定义形式207
8.8.2指向指针的指针变量的应用207
8.8.3多级指针的概念209
8.9指向函数的指针变量210
8.9.1指向函数的指针变量的一般定义形式210
8.9.2使用函数指针变量调用函数211
8.9.3使用指向函数的指针作为函数的参数212
8.10返回指针的函数214
8.10.1返回指针的函数的定义形式214
8.10.2返回指针的函数的应用214
8.11指向void的指针变量和指针的数据类型小结215
8.11.1指向void的指针变量215
8.11.2指针的数据类型小结216
8.12指针程序举例216
习题8225
第9章结构体与共用体227
9.1结构体227
9.1.1结构体类型和结构体变量227
9.1.2结构体类型的定义228
9.1.3结构变量的定义229
9.2结构体变量成员的引用方法231
9.2.1结构体变量的引用231
9.2.2结构体变量的赋值231
9.3结构体变量的初始化232
9.4结构体数组233
9.5结构体指针234
9.5.1指向结构体变量的指针234
9.5.2指向结构体数组的指针236
9.5.3结构体在函数传递中的应用237
9.6动态存储分配238
9.7用结构体和指针处理链表241
9.7.1链表的概念241
9.7.2建立链表242
9.7.3输出链表243
9.7.4对链表的插入操作244
9.7.5对链表的删除操作245
9.8共用体249
9.8.1共用体的概念249
9.8.2共用体类型的定义250
9.8.3共用体变量的定义250
9.8.4共用体变量成员的引用方法251
9.9枚举类型252
9.9.1枚举类型的定义252
9.9.2枚举变量的说明253
9.9.3枚举变量的赋值和使用253
9.10类型定义符typedef255
9.10.1典型用法256
9.10.2典型类型的别名定义形式256
习题9257
第10章文件259
10.1文件概述259
10.1.1文件的基本知识259
10.1.2文件类型指针260
10.2文件的打开与关闭261
10.2.1打开文件261
10.2.2关闭文件262
10.3文件的读与写263
10.3.1字符的输入与输出263
10.3.2字符串的输入与输出265
10.3.3文件的格式化输入与输出265
10.3.4文件的数据块输入与输出266
10.4文件的其他常用函数268
10.4.1文件的定位268
10.4.2出错检测271
10.5位运算与位运算符271
10.5.1按位与运算符271
10.5.2按位或运算符272
10.5.3按位取反运算符272
10.5.4按位异或运算符273
10.5.5左移运算符274
10.5.6右移运算符274
10.5.7复合赋值运算符275
10.5.8位运算举例275
习题10277
第11章课程设计案例278
附录AC语言中的关键字300
附录B运算符的优先级和结合性301
附录C常用字符与ASCII编码对照表303
附录DANSI C的常用库函数304
附录EVisual C++6.0菜单的中英文对照310
参考文献315