新書推薦:
《
潜水指南 全彩图解第4版
》
售價:NT$
602.0
《
超大规模集成电路设计——从工具到实例
》
售價:NT$
403.0
《
村上春树·旅(一本充满村上元素的旅行指南,带你寻访电影《挪威的森林》拍摄地,全彩印刷;200余幅摄影作品)
》
售價:NT$
301.0
《
智能驾驶硬件在环仿真测试与实践
》
售價:NT$
709.0
《
都铎王朝时期英格兰海事法庭研究
》
售價:NT$
398.0
《
中年成长:突破人生瓶颈的心理自助方案
》
售價:NT$
296.0
《
维奥莱塔:一个女人的一生
》
售價:NT$
347.0
《
商业银行担保管理实务全指引
》
售價:NT$
658.0
編輯推薦:
本书第1版为普通高等教育“十一五”国家级规划教材 配有题库、课件、习题等教学资源
內容簡介:
全书共9章,阐述了C语言的主要特点及C程序开发过程,介绍了基本数据类型、表达式和运算符,结构化程序控制流程,函数的使用以及相关知识,指针和数组的使用方法,用户定制类型及位运算,预处理器的使用方法,文件的基本操作方式,以及一些关于C语言的高级内容。
本书全面系统地介绍了C语言程序设计各要素,取材新颖,内容丰富,可读性强。本书充分考虑了读者对书中部分内容的心理适应性,对于一些容易让读者产生畏惧心理的内容作了适当的处理。本书所有程序都在Visual C 6.0、Visual C 2022和DevC 5.11开发环境中进行了严格的测试。
通过本书的学习,读者能迅速提高C语言程序设计的能力,经过适当的选择,可作为高等学校计算机及相关专业C语言程序设计课程的教材,同时也适合初学程序设计者或有一定编程实践基础,希望突破编程难点的读者作为自学教材。
目錄 :
第1章C语言程序设计基础1
1.1C语言的发展和主要特点1
1.1.1C语言的发展1
1.1.2C语言的主要特点1
1.2第一个C语言程序以及C语言程序开发过程2
1.2.1第一个C语言程序2
1.2.2C语言程序开发过程5
1.3数制及十进制数与R进制数之间的转换5
1.3.1数制5
1.3.2十进制数与R进制数之间的转换6
1.4程序陷阱7
习题17
第2章数据类型及其运算10
2.1标识符与关键字10
2.2C语言的数据类型11
2.3常量与变量15
2.3.1整型量15
2.3.2实型量18
2.3.3字符型量19
2.3.4符号常量21
2.3.5类型转换22
2.4基本运算符和表达式24
2.4.1运算符的种类、优先级和结合性概述24
2.4.2优先级和结合性25
2.5程序陷阱30
习题231
第3章C语言程序结构及相关语句35
3.1相关知识35
3.1.1算法描述方法35
3.1.2结构化程序35
3.1.3模块化结构36
3.2顺序语句36
3.2.1C程序的语句36
3.2.2数据输出语句38
3.2.3数据输入语句42
3.3分支结构程序48
3.3.1关系运算符和表达式48
3.3.2逻辑运算符和表达式49
3.3.3if语句51
3.3.4条件运算符和条件表达式58
3.3.5switch语句59
3.3.6程序举例62
3.4循环结构程序64
3.4.1while语句64
3.4.2do…while语句66
3.4.3for语句67
3.4.4转移语句69
3.4.5程序举例73
3.5实例研究:利用计算机破案74
3.6程序陷阱76
习题377
第4章函数86
4.1函数的定义与调用86
4.1.1函数定义的一般形式86
4.1.2函数调用的一般形式88
4.1.3函数的声明和函数原型89
4.2函数的参数和函数的值92
4.2.1函数的参数92
4.2.2函数的值93
4.3函数的嵌套调用94
4.4递归函数95
4.5变量的作用域97
4.5.1局部变量98
4.5.2全局变量100
4.6变量的存储类型和生存期103
4.6.1自动变量103
4.6.2外部变量106
4.6.3静态变量107
4.6.4寄存器变量108
4.7内部函数和外部函数109
4.7.1内部函数109
4.7.2外部函数110
4.8实例研究: 汉诺塔问题111
4.9程序陷阱112
习题4114
第5章数组和指针121
5.1一维数组的定义和引用121
5.1.1定义一维数组121
5.1.2引用一维数组的元素122
5.2二维数组125
5.2.1定义二维数组125
5.2.2引用二维数组的元素125
5.2.3二维数组的初始化127
5.3用数组作为函数的参数129
5.3.1用数组元素作为函数的参数129
5.3.2用一维数组名作为函数的参数130
5.3.3用多维数组作为函数的参数133
5.4字符数组与字符串134
5.4.1字符数组134
5.4.2字符串135
5.4.3字符串常用函数137
5.5数组程序举例141
5.6指针变量的定义143
5.7指针运算符143
5.8指向void的指针145
5.9函数参数的引用传递145
5.10指针变量和数组148
5.10.1指针变量与一维数组148
5.10.2指针变量与二维数组152
5.11字符指针、字符数组和字符串158
5.11.1字符指针与字符数组的区别158
5.11.2字符指针数组和字符串数组159
5.12实例研究: 冒泡程序161
5.13程序陷阱162
习题5163
第6章用户定制数据类型及位运算170
6.1结构170
6.1.1概述170
6.1.2结构的定义170
6.1.3结构变量成员的引用173
6.1.4结构变量的初始化175
6.1.5结构数组176
6.1.6指向结构变量的指针181
6.2联合184
6.2.1联合的概念184
6.2.2联合类型的定义185
6.2.3联合变量的定义185
6.2.4联合变量的赋值和使用186
6.3枚举类型188
6.4类型定义: typedef193
6.5位运算符195
6.5.1位运算符介绍195
6.5.2位运算综合举例200
6.6位段结构203
6.6.1位段结构的定义和位段结构变量的定义203
6.6.2位段成员的使用205
6.7程序陷阱206
习题6206
第7章预处理命令210
7.1概述210
7.2文件包含210
7.3宏定义211
7.3.1无参宏定义211
7.3.2带参宏定义213
7.3.3取消宏#undef220
7.4条件编译220
7.5宏assert(断言)224
7.6程序陷阱224
习题7225
第8章文件228
8.1文件概念228
8.2文件指针229
8.3文件的打开与关闭229
8.3.1文件打开函数fopen()229
8.3.2文件关闭函数fclose()231
8.4文件检测函数231
8.5对文本文件的操作232
8.5.1采用格式化读写函数fscanf()和fprintf()读写数据232
8.5.2采用字符读写函数fgetc()和fputc()读写字符234
8.5.3采用字符串读写函数fgets()和fputs()读写字符串237
8.6对二进制文件的操作239
8.6.1采用数据块读写函数fread()和write()读写二进制文件239
8.6.2随机读写二进制文件241
8.7实例研究: 人事管理系统244
8.7.1需求分析244
8.7.2功能描述244
8.7.3总体设计245
8.7.4系统实现246
8.8程序陷阱254
习题8255
第9章高级主题259
9.1变长参数表259
9.2命令行参数261
9.3动态内存分配与释放263
9.3.1动态内存分配函数malloc()263
9.3.2动态内存释放函数free()264
9.3.3动态内存处理实例: 线性链表264
9.4指针的深入讨论268
9.4.1指向函数的指针变量268
9.4.2返回指针的函数269
9.5程序陷阱270
习题9271
参考文献274
附录A常用C编译器使用方法275
附录B常用字符ASCII码对照表276
附录CC运算符与优先级277
附录DC常用库函数278
內容試閱 :
作者使用过国内数本C语言程序设计的教材,都不十分满意,C程序教学的普遍结果是,学生学完了C语言,却不会使用目前流行的C语言开发工具编写程序。同时,几乎所有教材都存在错误。例如,某经典教材的典型例题程序如下: #include/包含库函数printf()所需要的信息/
void CopyString(char from,char to)
{
for(; from!=‘\\\\0’; from ,to ) to=from;/复制from到to/
to=‘\\\\0’;/加上字符串结束符/
}
int main(void)/主函数main()/
{
char a=”I am a teacher.”;/定义字符指针/
char b=”You are a student.”;/定义字符指针/
printf(”a:%s\\\b:%s\\\”,a,b);/显示字符串a,b/
CopyString(a, b);/复制a到b/
printf(”a:%s\\\b:%s\\\”,a,b);/显示字符串a,b/
return 0; /返回值0, 返回操作系统/
}上面的程序在当前流行C/C 编程器Visual C 6.0 SP6和DevC 5.11都能正常通过编译,但运行到函数调用“CopyString(a, b);”时会出现运行错误。实际上函数CopyString()本没问题,其错就错在实参上,它试图把一个字符串常量赋值给另一个字符串常量。这在概念上就是错误的。书籍中存在错误是在所难免的,但这种潜在错误对读者的影响很难估计。由于读者很难有机会发现这种错误,或是发现了这类错误,可能还以为自己的理解错误了,这样读者会一直延续这种错误的观念,再把这种观念带到实际编程工作中,带来的社会影响就更大了。这个问题在某教材中存在了很多年,直到最近的最新版也依然存在。这也从侧面说明,改变这样的错误是要花时间代价的。
再比如类似下面的程序: #include /包含库函数printf()所需要的信息/
void main(void)/主函数main()/
{
printf(”Hello,world!\\\”);/输出”Hello, world”/
}在Visual C 6.0 SP6编译器中可以编译运行,而在语法检查更严格的DevC 5.11中根本通不过,这是由于在新标准中main()函数返回值类型不能为void,这样的程序即使在部分编译器上能够正常编译运行,但也是错误的,这类程序已根本谈不上可移植性了。
本书作者在经过多年教学及查阅大量参考资料后编写了本书。全书共9章,第1章重点阐述C语言的主要特点及C 程序开发过程;第2章着重介绍了基本数据类型、表达式和运算符;第3章介绍了结构化程序控制流程,其中重点讨论了3种基本控制结构;第4章着重探讨了函数的使用以及相关知识;第5章讨论了指针和数组的使用方法;第6章讨论了用户定制类型及位运算,包括结构、联合、位运算和枚举;第7章阐明了预处理器的使用方法;第8章介绍了文件的基本操作方式;第9章是一些关于C语言高级话题的讨论。
对于初学者,在考试时往往会感到茫然而不知所措,因此本书习题包括了选择题、填空题和编译题,这些题目选自考试题,可供学生期末复习,也可供教师出试题时参考。
本书在部分章节中还提供了实例研究,主要提供给那些精力充沛的学生深入学习与研究,每个实例研究都有一定的目的与意义,例如算法设计的实例研究(如第4章的实例研究“汉诺塔问题”,虽然难度一般,但却是算法设计中关于 “递归” 算法的实例,为将来学习算法设计打下坚实的基础,也为C 或数据结构学习关于“递归”课程设计项目作伏笔),也包括综合应用的实例研究(如第8章的实例研究“人事管理系统”,采用“软件工程”的方法进行分析,实现了一个简单的“数据库管理系统”)。
为了尽快提高读者的实际编程能力,本书各章提供了“程序陷阱”,在其中包含了在实际编程时容易出现的问题和对正文内容的深入讨论,对在不同C编译环境中存在的兼容性现象的C内容进行了实用而具体的指导。这部分内容不管对初学者还是对那些长期编程的人都很有用。
每章习题中的选择题和填空题全部改编于历年全国计算机二级等级考试原题,每章的编程习题一般来源于C语言程序设计课程真实考试题,所有习题稍加修改即可作为期末试题,教师在讲完课本正文内容后,可讲解部分或全部习题(将向所有教师提供习题的解析及参考答案)。
本书所有算法都同时在Visual C 6.0、Visual C 2022和DevC 5.11中通过测试。读者可根据实际情况选择适当的编译器,建议选择Visual C 6.0。
教师可采取多种方式来使用本书讲授C语言程序设计,应该根据学生的背景知识以及课程的学时数来进行内容的取舍。为满足不同层次的教学需求,本书使用了分层的思想,分层方法如下: 没有加星号()及双星号()的部分是基本内容,适合所有读者学习;加有星号()的部分适合计算机专业的读者深入学习的选学部分;加有双星号()的部分适合于感兴趣的读者研究。
作者为本书提供了全面的教学支持,可在清华大学出版社官方网站上下载如下教学参考内容。
(1) 提供书中所有例题在Visual C 6.0、Visual C 6.0 2022和DevC 5.11开发环境中的测试程序。
(2) 提供教学用PowerPoint幻灯片课件。
(3) 提供教材中所有习题的参考答案。
(4) 提供多套C语言程序设计模拟试题及其解答,以供学生期末复习,也可供教师出考试题时参考。
(5) 提供C程序设计相关的其他资料(如DevC 、流行免费C/C 编译器的下载网址)。
(6) 线上实训项目与线上习题使用指导。
通过扫描二维码可观看全书所有例题、数据结构相关的类模板及算法相关函数模板的程序演示视频,其中第1个二维码对应Visual C 6.0开发环境的程序演示视频,第2个二维码对应Visual C 2022开发环境的程序演示视频,第3个二维码对应DevC 5.11开发环境的程序演示视频。
在附录A中介绍了Visual C 6.0、Visual C 2022和DevC 5.11开发环境建立工程的步骤,可通过扫描二维码观看具体操作视频。
提供大量的线上实训项目与线上习题,并为教师提供全部参考答案,线上实训项目可用于实验项目或课程设计项目,线上习题可用于布置课后习题,所有线上实训项目与线上习题都采用通关方式完成任务,具体包括任务描述和相关知识,对编程实践项目还包括编程要求及测试说明,线上习题包括了单项选题关卡、填空题关卡、判断题关卡及编程实践题关卡,不但可用于学生练习,也可供教师出考试题时参考。线上实训项目与线上习题都由线上平台自动测评与打分,学生所得分值可用于过程化考核成绩。
本书的出版要感谢清华大学出版社相关编校人员,由于他们为本书的出版倾注了大量热情和付出,才让读者有机会看到本书。
尽管作者有严谨的治学态度并付出最大努力,但限于水平,书中难免有不妥之处,因此敬请各位读者不吝赐教,以便作者有一个提高的机会,并在再版时尽力采用所提意见,尽快提高本书的水平。
本书第1章和第2章由彭勇编写,第3章和附录B~附录D由罗佳编写,第4章和第8章由刘群编写,第5章由杨菊英编写,第6章和第7章由丁晓峰编写,第9章和附录A由游洪跃编写,全书由游洪跃统稿。作者还要感谢为本书提供直接或间接帮助的每一位朋友,由于你们热情的帮助或鼓励激发了作者写好本书的信心以及写作热情。
作者2024年8月