扫描二维码,下载安卓APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

C语言程序设计——基于计算思维培养

综合评级:
★★★★★

定价:
¥42.00

作者:
杨俊生 编著

出版社:
电子工业出版社

出版日期:
2015年3月

页数:
316

字数:
505600

ISBN:
9787121250927

书籍介绍

本书系统地介绍了利用C语言进行程序设计的基本知识。全书共11章,主要内容包括算法与程序设计基础、C语言的基本概念、数据类型与表达式、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体与共用体、文件。在掌握C语言基础知识和基本技能的前提下,以综合案例开发、拓展与探究题目、思维导图形式的课后总结为手段,以Microsoft Visio 2010和RAPTOR为工具,培养学生科学思维的意识和能力,使其养成严谨的程序设计风格和习惯,初步具备运用C语言解决实际问题的能力。

作者简介

杨俊生,中国传媒大学计算机学院基础教学部主任,负责全院基础课程教学。多次获得校级名师称号。2011年校级教学质量评价体系建设项目“《计算机与信息技术基础》分级(层)教学方案研究”获得优秀奖。

目录

第1章 程序设计基础 1

1.1 引例 1

1.1.1 软硬件基础 1

1.1.2 编写程序 1

1.2 算法 3

1.2.1 算法及其特性 3

1.2.2 算法的表示方法 4

1.2.3 算法设计的基本方法 7

1.3 程序与程序设计 12

1.3.1 程序与程序设计语言 12

1.3.2 程序设计语言处理过程 13

1.3.3 计算机解题过程 15

1.3.4 程序设计方法 17

1.4 案例—“学生成绩管理系统”需求分析与模块图的绘制 19

本章小结 21

探究性题目:使用RAPTOR进行程序设计 22

第2章 C语言概述 23

2.1 引例 23

2.2 C语言出现的历史背景 23

2.3 C语言的特点 24

2.4 C程序结构和代码书写规则 25

2.4.1 C程序结构 25

2.4.2 代码书写规则 28

2.5 C程序的实现 31

2.5.1 C程序的实现步骤和调试 31

2.5.2 VC++6.0的使用 34

本章小结 38

探究性题目:C语言应用领域及其应用前景的分析 39

第3章 数据类型与表达式 40

3.1 引例 40

3.2 C语言的数据类型 40

3.3 常量与变量 41

3.3.1 常量 41

3.3.2 变量 43

3.3.3 常变量 44

3.4.4 标识符 44

3.4 基本数据类型 45

3.4.1 整型数据 45

3.4.2 浮点型数据 48

3.4.3 字符型数据 50

3.4.4 如何确定常量的类型 52

3.5 运算符和表达式 53

3.5.1 运算符和表达式简介 53

3.5.2 算术运算符和算术表达式 53

3.5.3 赋值运算符和赋值表达式 55

3.5.4 逗号运算符和逗号表达式 56

3.5.5 位运算符与位运算表达式 56

3.6 类型转换 59

3.6.1 隐含类型转换 59

3.6.2 强制类型转换 60

3.6.3 赋值过程中的类型转换 60

3.7 案例—“学生成绩管理系统”中学生属性数据的描述 62

3.7.1 任务描述 62

3.7.2 数据描述 62

3.7.3 算法描述 62

3.7.4 程序实现 62

本章小结 63

探究性题目:VC++6.0中浮点型数据存储形式 64

第4章 顺序结构程序设计 65

4.1 引例 65

4.2 C语句概述 66

4.3 数据输入/输出 68

4.3.1 字符数据的输入和输出 68

4.3.2 格式输入与输出函数 69

4.4 顺序结构程序设计 74

4.5 使用scanf()函数常见的问题 79

4.6 案例—“学生成绩管理系统”中用户菜单的设计与实现 84

本章小结 86

探究性题目:常用缓冲和非缓冲输入库函数使用方法的剖析 87

第5章 选择结构程序设计 88

5.1 引例 88

5.2 关系运算和逻辑运算 90

5.2.1 关系运算 90

5.2.2 逻辑运算 90

5.3 if语句 93

5.3.1 if语句的3种基本形式 93

5.3.2 if语句的嵌套 96

5.4 条件运算符 97

5.5 switch语句 98

5.6 选择结构程序设计举例 100

5.7 案例—“学生成绩管理系统”中用户菜单的选择 107

5.7.1 任务描述 107

5.7.2 数据描述 107

5.7.3 算法描述 107

5.7.4 程序实现 108

本章小结 109

探究性题目:C编译器对逻辑运算的优化 110

第6章 循环结构程序设计 111

6.1 引例 111

6.2 概述 111

6.2.1 C语言中实现循环的5种机制 111

6.2.2 goto语句以及用goto语句构成循环 111

6.3 循环语句 113

6.3.1 while语句 113

6.3.2 do-while语句 114

6.3.3 for语句 115

6.3.4 几种循环的比较 116

6.4 循环的嵌套 118

6.5 break语句和continue语句 119

6.5.1 break语句 119

6.5.2 continue语句 120

6.6 循环结构程序举例 122

6.7 案例—“学生成绩管理系统”中用户菜单的循环选择 130

6.7.1 任务描述 130

6.7.2 数据描述 130

6.7.3 算法描述 130

6.7.4 程序实现 131

本章小结 132

探究性题目:算法中循环结构的时间

复杂度分析 133

第7章 数组 134

7.1 引例 134

7.2 一维数组的定义和引用 135

7.2.1 一维数组的定义 135

7.2.2 一维数组的引用 136

7.2.3 一维数组的初始化 136

7.2.4 一维数组应用举例 137

7.3 二维数组的定义和引用 146

7.3.1 二维数组的定义 146

7.3.2 二维数组的引用 147

7.3.3 二维数组的初始化 148

7.3.4 二维数组应用举例 149

7.4 字符数组 152

7.4.1 字符数组的定义与引用 153

7.4.2 字符数组与字符串 153

7.4.3 字符数组的初始化 154

7.4.4 字符数组的输入/输出 154

7.4.5 字符串处理函数 156

7.4.6 字符数组应用举例 159

7.5 案例—以数组为数据结构实现“学生成绩管理系统” 160

7.5.1 任务描述 160

7.5.2 数据描述 160

7.5.3 算法描述 160

7.5.4 程序实现 161

本章小结 163

探究性题目:高精度计算 164

第8章 函数 165

8.1 引例 165

8.2 函数的分类和定义 166

8.2.1 函数的分类 166

8.2.2 函数定义的一般形式 167

8.3 函数的调用 168

8.3.1 函数调用概述 168

8.3.2 形式参数和实际参数 169

8.3.3 函数的返回值 171

8.3.4 函数原型 172

8.4 数组作为函数参数 173

8.4.1 数组元素作函数实参 173

8.4.2 数组名作函数参数 174

8.4.3 多维数组名作函数参数 177

8.5 函数的嵌套调用和递归调用 178

8.5.1 函数的嵌套调用 178

8.5.2 函数的递归调用 180

8.6 变量的作用域 184

8.6.1 局部变量 184

8.6.2 全局变量 184

8.6.3 同名变量的作用域重合问题 186

8.7 变量的存储类别 188

8.7.1 动态存储方式与静态存储方式 188

8.7.2 auto变量和register变量 189

8.7.3 用extern声明外部变量 189

8.7.4 static变量 191

8.8 内部函数和外部函数 192

8.9 预处理命令 192

8.10 再论C程序组织结构 197

8.11 案例—以函数为模块化设计手段改写“学生成绩管理系统” 200

8.11.1 任务描述 200

8.11.2 模块划分 200

8.11.2 接口设计 201

8.11.3 主模块的实现 202

8.11.4 子模块的实现 204

本章小结 206

探究性题目:C语言中函数调用机理的探讨 207

第9章 指针 208

9.1 引例 208

9.2 地址和指针的概念 209

9.2.1 地址和指针 209

9.2.2 内存单元的地址与内存单元的值 210

9.2.3 直接访问与间接访问 210

9.3 指针变量 210

9.3.1 指针变量的定义 210

9.3.2 指针变量的引用 211

9.3.3 指针变量作为函数参数 212

9.4 指针与数组 214

9.4.1 一维数组与指针 214

9.4.2 二维数组与指针 219

9.5 字符串与指针 223

9.5.1 通过指针访问字符串常量 223

9.5.2 通过指针访问字符数组 224

9.5.3 字符指针作函数参数 224

9.5.4 使用字符指针变量和字数组的比较 225

9.6 指针与函数 226

9.6.1 用函数指针变量调用函数 226

9.6.2 返回指针值的函数 227

9.7 指针数组和指向指针的指针 228

9.7.1 指针数组的概念 228

9.7.2 指向指针的指针 230

9.7.3 指针数组作main函数的形参 231

9.8 动态内存分配 233

9.8.1 C程序存储空间布局 233

9.8.2 动态内存分配函数 233

9.9 案例—以指针为编程手段改写“学生成绩管理系统” 236

9.9.1 任务描述 236

9.9.2 数据描述 236

9.9.3 算法描述 236

9.9.4 程序实现 236

本章小结 240

探究性题目:使用C语言实现动态数组 241

第10章 结构体与共用体 242

10.1 引例 242

10.2 结构体类型与结构体变量 243

10.2.1 结构体类型的声明 243

10.2.2 结构体变量的定义 245

10.2.3 结构体变量的引用和初始化 246

10.3 结构体数组 250

10.3.1 结构体数组的定义和初始化 250

10.3.2 结构体数组应用举例 251

10.4 指向结构体类型数据的指针 252

10.4.1 指向结构体变量的指针 252

10.4.2 指向结构体数组的指针 254

10.4.3 结构体变量和指向结构体

前言

本书符合教育部高等学校计算机基础课程教学指导委员会2011版《高等学校计算机基础核心课程教学实施方案》的基本要求,符合学生学习的认知规律,是工业和信息产业科技与教育专著出版资金项目的规划教材。

本书突出“厚基础、重思维、提倡自主学习、注重能力培养”教学理念和指导思想,主要表现在以下几个方面。

(1)突出科学思维意识和能力的培养。教材加入了算法设计方法、常见经典算法、程序设计方法等与科学思维相关的内容;每章后的小结除了对本章语法要点、常见错误总结外,还着重对本章所涉及的能力点、典型算法、思维或算法设计方法进行了总结,并以思维导图的形式给出。

(2)重视拓展和探究性教学,培养学生自主学习能力。教材每章后都有一个探究性题目,用来引导学生通过查阅相关资料,综合运用所学知识完成一个难度稍大的题目,从而培养学生自主学习的能力;另一方面,教师可根据不同的教学对象和教学要求对探究性题目进行取舍,便于开展因材施教;书中提供了大量的思考或自主学习题目,鼓励学生独立动手动脑,通过自己的努力拓展教材中所学知识。

(3)提升学生综合运用所学知识编写程序的能力。通过引入一个贯穿整本书的综合案例,使学生对使用计算机来解决实际问题的过程有一个切实的、整体的认识。

(4)注重编程逻辑的培养。通过引入Microsoft Visio 2010、RAPTOR等可视化算法设计工具,突出学生思维逻辑的培养,使学生的注意力集中在算法的设计上。

(5)从程序设计者的角度而不是从阅读者的角度来设计本书的例子,采用“提出问题→分析问题→设计算法→程序实现→测试→总结、优化或扩展深化(以讨论或思考题的方式)”形式来描述例子,从而达到启发读者编程思路,培养逻辑思维能力的目的。

(6)为了学生能更好、更快地适应市场的需求,本书在函数一章中增加了工程化开发程序的方法,从工程组织的角度介绍了规模稍大的多文件程序的科学合理的组织形式。

(7)为了拓宽并启发学生设计算法和程序时从多角度考虑问题,对同一任务采用了多种设计方式。如第1章中的猴子吃桃采用了递推算法,而在函数一章中采用了递归算法实现。

(8)将学生容易犯错的地方,以特殊格式突出显示了注意事项,避免学生在细节上浪费时间。

(9)为了满足课堂教学和教师备课的需要,教材配有电子课件,登录华信教育资源网注册后免费下载。

本书内容全面,由浅入深,循序渐进,在打好“基础知识、基本技能”的基础上,注重培养学生的逻辑思维能力、程序设计能力、初步的算法设计能力、自主学习能力。

本书由杨俊生、谭志芳和王兆华编写。第1、7、9、11章由杨俊生编写,第2、4、5、8章由谭志芳编写,第3、6、10章由王兆华编写。

由于编者水平有限,书中难免有不妥之处,敬请读者批评指正。

 

编 者