新書推薦:
《
大模型应用开发:RAG入门与实战
》
售價:NT$
407.0
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
《
爱你,是我做过最好的事
》
售價:NT$
254.0
《
史铁生:听风八百遍,才知是人间(2)
》
售價:NT$
254.0
|
編輯推薦: |
1、本书通过大量趣味性和实用性的例题来说明C语言中语法的应用,以及程序设计的概念、方法、技巧,并对例题做了详细的分析,富有启发性。2、将初学者较难掌握的指针数据类型提前到数组这一章节,使学生有较多的时间来理解和掌握它的应用。3、所配的练习题题型丰富,有针对性,贴近生活,能够激发学生学习的兴趣和积极性。4、附录中的程序调试技术可帮助初学者尽快掌握程序调试的基本技术。5、结构合理,重点突出,难点分散,图文并茂,格式规范,有利于学生的学习和培养良好的程序设计风格和习惯。6、本书可作为各类高等学校本科、高职高专、成人教育的教材,也可作为计算机等级考试(二级C)的参考书和自学教材。配套教学资源可从出版社网站下载。
|
內容簡介: |
本书以目前流行的C语言为例,全面阐述了高级语言程序设计的基本概念、基本方法和基本技术,主要内容包括程序设计基础,数据类型、运算符和表达式,结构化程序设计,数组、指针,函数,结构体类型,文件等。 本书强调程序设计方法的教学,通过大量趣味性和实用性的例题来说明C语言中语法的应用,以及程序设计的概念、方法、技巧,并对例题做了详细的分析,富有启发性;将初学者较难掌握的指针数据类型提前到数组这一章节,使学生有较多的时间来理解和掌握其应用;所配的练习题题型丰富,有针对性,贴近生活,能够激发学生学习的兴趣和积极性;附录中的程序调试技术可帮助初学者尽快掌握程序调试的基本技术;结构合理,重点突出,难点分散,图文并茂,格式规范,有利于学生的学习和培养良好的程序设计风格与 习惯。 本书可作为各类高等学校本科、高职高专、成人教育的教材,也可作为计算机等级考试(二级C)的参考书和自学教材。
|
目錄:
|
第1章 程序设计基础... 1
1.1 数在计算机内的表示形式... 1
1.1.1 进位计数制... 1
1.1.2 数制转换... 2
1.1.3 码制... 4
1.1.4 定点数和浮点数... 6
1.1.5 字符编码... 7
1.2 程序设计和算法... 10
1.2.1 计算机的工作原理... 10
1.2.2 程序设计... 10
1.2.3 算法... 11
1.3 程序设计语言... 15
1.3.1 程序设计语言分类... 15
1.3.2 C语言的发展和特点... 16
1.4 C语言的字符集和标识符... 18
1.4.1 字符集... 18
1.4.2 标识符... 18
1.5 C程序的基本结构和上机步骤... 19
1.5.1 C程序的基本结构... 19
1.5.2 C程序的上机步骤... 21
练习1. 22
第2章 数据类型、运算符和表达式... 24
2.1 常量和变量... 24
2.1.1 常量... 24
2.1.2 变量... 25
2.2 基本数据类型... 26
2.2.1 整型数据... 26
2.2.2 实型数据... 28
2.2.3 字符型数据... 30
2.2.4 变量的初始化... 32
2.3 运算符和表达式... 33
2.3.1 算术运算符和算术表达式... 34
2.3.2 赋值运算符和赋值表达式... 35
2.3.3 逗号运算符和逗号表达式... 37
2.3.4 &运算符和sizeof运算符... 37
2.3.5 运算符的优先级和结合性... 38
2.4 数据类型转换... 39
2.4.1 类型自动转换... 39
2.4.2 类型强制转换... 40
练习2. 41
第3章 结构化程序设计... 44
3.1 结构化程序设计概述... 44
3.2 顺序结构程序设计... 45
3.2.1 C语言语句概述... 45
3.2.2 常用的输入和输出函数... 47
3.2.3 顺序结构程序设计举例... 52
3.3 选择结构程序设计... 53
3.3.1 关系运算符和关系表达式... 53
3.3.2 逻辑运算符和逻辑表达式... 54
3.3.3 if语句... 55
3.3.4 条件运算符... 62
3.3.5 switch语句... 63
3.4 循环结构程序设计... 66
3.4.1 while循环结构... 67
3.4.2 do-while循环结构... 68
3.4.3 for循环结构... 70
3.4.4 循环结构的嵌套... 72
3.4.5 无条件转移语句... 74
3.4.6 循环程序设计方法举例... 77
练习3. 81
第4章 数组、指针... 93
4.1 一维数组... 93
4.1.1 一维数组的定义... 93
4.1.2 一维数组的初始化... 94
4.1.3 一维数组元素的引用... 95
4.1.4 一维数组应用举例... 96
4.2 二维数组... 103
4.2.1 二维数组的定义... 103
4.2.2 二维数组的初始化... 104
4.2.3 二维数组元素的引用... 104
4.2.4 二维数组应用举例... 105
4.3 指针与数组... 108
4.3.1 指针与指针变量... 108
4.3.2 与指针有关的运算... 109
4.3.3 指针与一维数组... 113
4.3.4 用typedef自定义类型... 116
4.3.5 指针与二维数组... 117
4.4 字符数组和字符串处理函数... 119
4.4.1 字符数组... 120
4.4.2 常用字符串处理函数... 123
4.4.3 字符数组应用举例... 126
4.5 指针数组和二级指针... 130
4.5.1 指针数组... 130
4.5.2 指向指针的指针... 132
练习4. 133
第5章 函数... 142
5.1 函数概述... 142
5.2 函数的定义... 143
5.3 函数的调用... 145
5.3.1 函数声明... 145
5.3.2 函数调用... 147
5.3.3 形参与实参... 149
5.3.4 库函数调用实例... 150
5.4 数组作为函数的参数... 152
5.4.1 数组元素作函数实参... 152
5.4.2 指针作函数参数... 153
5.4.3 数组名作函数参数... 156
5.5 函数的嵌套调用和递归调用... 161
5.5.1 函数的嵌套调用... 161
5.5.2 函数的递归调用... 162
5.6 指针与函数... 166
5.6.1 返回指针值的函数... 166
5.6.2 动态存储分配函数... 168
5.6.3 指向函数的指针... 170
5.7 变量的作用域和存储类别... 174
5.7.1 变量的作用域... 174
5.7.2 变量的存储类别... 177
5.8 内部函数和外部函数... 183
5.8.1 内部函数... 183
5.8.2 外部函数... 183
5.8.3 外部函数应用举例... 183
练习5. 186
第6章 结构体类型... 196
6.1 结构体类型的定义... 196
6.2 结构体变量的定义和使用... 198
6.2.1 结构体变量的定义和初始化... 198
6.2.2 结构体变量的使用... 200
6.3 结构体数组... 201
6.3.1 结构体数组的定义和初始化... 201
6.3.2 结构体指针... 202
6.4 结构体作函数参数... 203
6.4.1 结构体变量作函数参数... 203
6.4.2 结构体指针(数组)作函数参数... 204
6.5 动态数据结构链表... 206
6.5.1 单链表概述... 206
6.5.2 单链表的基本操作... 207
6.5.3 单链表应用举例... 211
练习6. 212
第7章 文件... 216
7.1 文件概述... 216
7.2 文件的打开和关闭... 218
7.2.1 文件类型指针... 218
7.2.2 文件的打开... 218
7.2.3 文件的关闭... 219
7.3 文件的读写... 220
7.3.1 文件的字符读写... 220
7.3.2 文件的字符串读写... 223
7.3.3 文件的格式化读写... 225
7.3.4 文件的数据块读写... 227
7.4 文件的定位... 229
7.4.1 rewind函数... 229
7.4.2 fseek函数... 230
7.4.3 ftell函数... 232
7.5 文件的出错检测与处理... 233
7.5.1 ferror函数... 233
7.5.2 clearerr函数... 233
练习7. 234
附录A 常用运算符的含义、优先级和结合性............................................................. 236
附录B 常用C库函数................................................................................................ 237
附录C 常见错误分析和程序调试.............................................................................. 241
参考文献..................................................................................................................... 252
|
內容試閱:
|
5.1 函 数 概 述 在第1章中已经介绍过,C程序是由一个个函数组成的。虽然在前面各章的程序中都只有一个主函数main,但一个真正实用的程序往往由多个函数组成。C语言中的函数相当于其他高级语言的子程序,C语言不仅提供了极为丰富的库函数,还允许用户建立自己定义的函数。用户可把自己的算法编成一个个相对独立的函数,然后用调用的方法来使用函数。
在C语言中,所有的函数定义(包括主函数main)都是平行的。也就是说,在一个函数的函数体内,不能再定义另一个函数,即不能嵌套定义。但函数之间允许相互调用,也允许嵌套调用,甚至函数还可以自己调用自己,称为递归调用。习惯上把调用者称为主调函数,被调用的函数称为被调函数。main函数是主函数,它可以调用其他函数,但不能被其他函数所调用。因此,C程序的执行总是从main函数开始,完成对其他函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C源程序必须有,也只能有一个主函数main。因此,C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言。函数的作用有两个:
(1)避免代码的重复。一个程序中往往有多处需要完成一个特定的功能,如求一个数的平方根或者对一组数据排序。如果没有函数,则程序中就要把求数的平方根程序或者排序程序重复多次。有了函数机制后,可以把实现一个特定功能的程序,如求数的平方根程序或者排序程序,编成一个个函数。这样,当需要求数的平方根或者排序时,只要调用相应的函数就可以了。
(2)便于结构化程序设计。结构化程序设计在总体设计阶段采用自顶向下,逐步求精的模块化设计方法,该方法把一个复杂的待求解问题根据总需求划分成若干个相对独立的模块,每个模块完成一个特定的功能。如果一个模块应完成的功能过于复杂,还可以再细分成若干个子模块。不管是模块还是子模块,在C语言中都可以用函数实现,因此,C语言易于实现结构化程序设计,它使得程序的层次结构清晰,便于程序的编写、阅读、调试。
在C语言中可从不同的角度对函数分类:
(1)从函数定义的角度看,函数可分为库函数和用户定义函数两种。
① 库函数是由C系统提供,用户无须定义,也不必在程序中作类型声明,只需在程序前包含有该函数原型的头文件即可在程序中直接调用。例如,在前面各章的例题中反复用到的printf、scanf、gets、puts、sqrt、strcmp等函数均属此类。
② 用户定义函数由用户按需要写的函数。对于用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数中还必须对该被调函数进行类型声明,然后才能使用。
(2)C语言的函数兼有其他高级语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。
① 有返回值函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。如数学函数即属于此类函数。由用户定义的这种要返回函数值的函数,必须在函数定义和函数声明中明确返回值的类型。
②无返回值函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。该类函数类似于其他高级语言中的过程。由于函数无返回值,用户在定义该类函数时可指定其返回为空类型,空类型的类型标识符为void。
(3)从主调函数和被调函数之间数据传送的角度看,又可分为无参函数和有参函数 两种。
① 无参函数在函数定义、函数声明及函数调用时均不带参数,主调函数和被调函数之间不进行参数传送。此类函数通常用来完成一组指定的功能,可以返回或不返回函数值。
② 有参函数也称为带参函数,在函数定义及函数声明时都有参数,称为形式参数(简称为形参)。在函数调用时也必须给出参数,称为实际参数(简称为实参)。 进行函数调用时,主调函数将把实参的值传送给形参,供被调函数使用。
|
|