C编程从入门到实践

C编程从入门到实践
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2019-06
版次: 1
ISBN: 9787115500687
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 492页
字数: 1千字
35人买过
  • 本书循序渐进、由浅入深地讲解了C语言开发的技术。全书共25章。本书不仅介绍了C语言的基础和核心知识(如开发工具、语法、运算符、表达式、输入/输出、流程控制、数组、字符串、函数),还讲解了C语言中的重点和难点(如指针、结构体、共用体和枚举、链表、位运算、预编译、文件操作、调试、内存管理、高级编程技术、算法、数据结构、网络编程技术等)。此外,本书还通过4个综合实例,介绍了C语言在综合项目中的应用。全书内容以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握C语言。
      本书不但适用C语言的初学者,也适合有一定C语言基础的读者学习,还可以作为大专院校相关专业的师生用书和培训学校的教材。 王长青,华为通信工程师,现负责电信BSS领域相关产品的详细架构设计和开发实施工作。熟悉面向对象技术及UML,15年C和C++开发经验,10年C#开发经验,熟悉相关的编译原理、数据结构、算法。精通Unix、Linux操作系统,且能熟练使用常用操作命令,并且熟悉该环境下的C/C++开发。 目  录

    第1章 C语言之定位 1

    1.1 计算机应用基础 2

    1.1.1 中央处理器 2

    1.1.2 位和字节 2

    1.1.3 二进制 2

    1.1.4 编码格式 3

    1.2 C语言的诞生 4

    1.3 第一印象的建立 5

    1.4 理解编译系统—学习的第一步 6

    1.5 技术解惑 7

    1.5.1 学习C语言还有用吗 7

    1.5.2 怎样学好C语言 8

    1.5.3 学好C语言的建议 8

    1.6 课后练习 8

    第2章 C语言开发工具详解 9

    2.1 用DOS开发C程序 10

    2.1.1 安装Turbo C 3.0 10

    2.1.2 使用Turbo C 3.0 10

    2.2 在Windows环境下使用

    Visual Studio 2017 11

    2.2.1 安装Visual Studio 2017 11

    2.2.2 使用Visual Studio 2017开发一个C程序 15

    2.3 使用轻量级开发工具DEV C++ 18

    2.3.1 安装DEV C++ 18

    2.3.2 使用DEV C++运行一个C程序 20

    2.4 使用Vsiual C++ 6.0开发C程序 20

    2.5 使用手机开发C程序 22

    2.6 技术解惑 23

    2.6.1 安装Visual Studio 2017时遇到的常见问题 23

    2.6.2 在Windows 7中安装Visual Studio时遇到的常见问题 24

    2.7 课后练习 24

    第3章 程序员基本素质的培养 25

    3.1 养成好的命名习惯 26

    3.2 C程序文件结构 26

    3.2.1 C程序的组成部分 26

    3.2.2 C程序的格式总结 27

    3.3 养成好的C语言编程风格 28

    3.3.1 随时使用缩进格式 28

    3.3.2 注意大括号的位置 28

    3.3.3 函数的规则 29

    3.3.4 注意注释 29

    3.4 如何成为一名优秀的程序员 29

    3.5 技术解惑 31

    3.6 课后练习 31

    第4章 C语言语法 32

    4.1 标识符和关键字 33

    4.2 最基本的数据类型 33

    4.3 常量和变量 34

    4.3.1 常量 35

    4.3.2 变量 36

    4.4 整型数据 37

    4.4.1 整型常量 38

    4.4.2 整型变量 39

    4.5 实型数据 41

    4.5.1 实型常量 41

    4.5.2 实型变量 42

    4.5.3 实型常量的类型 43

    4.6 字符型数据 43

    4.6.1 字符常量 43

    4.6.2 字符串常量 45

    4.6.3 字符变量 46

    4.7 初始化变量 47

    4.8 整型、实型和字符型数据间的运算总结 47

    4.8.1 自动转换 47

    4.8.2 强制转换 49

    4.9 技术解惑 49

    4.9.1 在C语言中无符号整型变量和有符号整型变量

    的定义 49

    4.9.2 在C语言中字符变量的含义 50

    4.9.3 如何理解字符型数据的取值范围 50

    4.9.4 怎样将带小数点的字符型数据转换成浮点型 50

    4.10 课后练习 51

    第5章 运算符和表达式 52

    5.1 运算符和表达式的概述 53

    5.1.1 运算符的种类 53

    5.1.2 运算符的优先级 54

    5.2 算术运算符和算术表达式 55

    5.2.1 单目运算符 55

    5.2.2 双目运算符 56

    5.3 赋值运算符和赋值表达式 56

    5.3.1 基本赋值运算符 56

    5.3.2 复合赋值运算符 57

    5.3.3 赋值表达式 58

    5.4 关系运算符和关系表达式 59

    5.4.1 关系运算符 59

    5.4.2 关系表达式 59

    5.5 逻辑运算符和逻辑表达式 60

    5.5.1 逻辑运算符 60

    5.5.2 逻辑表达式 60

    5.6 逗号运算符和逗号表达式 62

    5.6.1 逗号运算符 62

    5.6.2 逗号表达式 62

    5.7 求字节数的运算符 63

    5.8 技术解惑 64

    5.8.1 C语言运算符优先级的详情 64

    5.8.2 少数运算符在规定表达式中的求值顺序 65

    5.8.3 在C语言中是否可以进行混合运算 66

    5.8.4 在一个逻辑条件语句中常数项永远在左侧 66

    5.8.5 赋值处理的自动类型转换 66

    5.9 课后练习 67

    第6章 输入和输出 68

    6.1 C语句的初步知识 69

    6.1.1 C语句简介 69

    6.1.2 赋值语句 70

    6.2 打通任督二脉—数据输入和输出 71

    6.2.1 putchar函数 71

    6.2.2 getchar函数 72

    6.2.3 printf函数 73

    6.2.4 scanf函数 76

    6.2.5 puts函数 79

    6.2.6 C11标准函数gets_s 80

    6.3 技术解惑 80

    6.3.1 gets_s函数和scanf函数的区别 80

    6.3.2 克服gets_s函数的缺陷 81

    6.3.3 C语言的输入和输出问题 82

    6.4 课后练习 83

    第7章 流程控制 84

    7.1 最常见的顺序结构 85

    7.2 选择结构 85

    7.2.1 单分支结构语句 86

    7.2.2 双分支结构语句 87

    7.2.3 多分支结构语句 90

    7.2.4 条件运算符和条件表达式 91

    7.3 循环结构 92

    7.3.1 for语句 93

    7.3.2 while语句 94

    7.3.3 do…while语句 96

    7.3.4 正确对待goto语句 97

    7.3.5 break/continue跳跃 98

    7.3.6 死循环/退出程序 99

    7.4 技术解惑 100

    7.4.1 循环中的低效问题 100

    7.4.2 分析C语言循环语句的效率 101

    7.4.3 使用for循环语句的注意事项 102

    7.5 课后练习 102

    第8章 数组和字符串—数据的存在形式 104

    8.1 一维数组 105

    8.1.1 定义一维数组 105

    8.1.2 引用一维数组的元素 105

    8.1.3 初始化一维数组 106

    8.2 多维数组 107

    8.2.1 二维数组的用法 107

    8.2.2 多维数组的用法 110

    8.3 字符数组与字符串 112

    8.3.1 字符数组 112

    8.3.2 字符串与字符数组 113

    8.3.3 字符数组的输入和输出 113

    8.4 字符串处理函数 115

    8.4.1 测试字符串长度的函数 115

    8.4.2 字符串大小写转换函数 115

    8.4.3 字符串复制函数 116

    8.4.4 字符串比较函数 117

    8.4.5 字符串连接函数 119

    8.4.6 其他的字符串函数 119

    8.4.7 将字符串转换成数值的函数 120

    8.5 字符处理函数 121

    8.5.1 字符检测函数 121

    8.5.2 字符大小写转换函数 122

    8.6 技术解惑 123

    8.6.1 数组的下标总是从0开始吗 123

    8.6.2 C语言对数组的处理非常有效吗 124

    8.6.3 初始化一维数组的注意事项 124

    8.6.4 冒泡排序 125

    8.7 课后练习 125

    第9章 函数 126

    9.1 C函数的基础知识 127

    9.1.1 函数的分类 127

    9.1.2 函数的定义 128

    9.2 函数声明和函数原型 129

    9.3 函数的参数 131

    9.3.1 形参和实参 131

    9.3.2 以数组名作为函数的参数 132

    9.3.3 以数组作为函数的参数 133

    9.4 函数的返回值 135

    9.5 函数的调用 136

    9.5.1 函数调用的格式 136

    9.5.2 函数的调用方式 137

    9.5.3 被调函数的声明方式 138

    9.5.4 对调用函数的方式进行深入分析 139

    9.6 函数的嵌套调用和递归调用 140

    9.6.1 函数的嵌套调用 140

    9.6.2 函数的递归调用 142

    9.7 变量的作用域和生存期 145

    9.7.1 变量作用域 145

    9.7.2 静态存储变量和动态存储变量 147

    9.8 C的内部函数和外部函数 153

    9.8.1 内部函数 153

    9.8.2 外部函数 153

    9.9 库函数 154

    9.10 技术解惑 156

    9.10.1 通过Turbo C深入分析 项目文件 156

    9.10.2 要尽量避免不必要的函数调用 157

    9.10.3 请确保函数的声明和定义是静态的 158

    9.10.4 避免过长的main()函数 158

    9.10.5 函数的地址也是数据 160

    9.10.6 说明函数的时机 160

    9.10.7 一个函数可以有多少个参数 161

    9.10.8 如果一个函数没有返回值,是否需要加入return

     语句 162

    9.10.9 在程序退出main函数之后还有可能执行一部分代码 162

    9.10.10 exit()函数和return语句的差异 162

    9.11 课后练习 162

    第10章 指针 164

    10.1 基本概念 165

    10.2 变量的指针和指向变量的指针变量 165

    10.2.1 声明指针变量 166

    10.2.2 指针变量的初始化 166

    10.2.3 指针变量的引用 167

    10.2.4 关于指针运算符的说明 168

    10.2.5 指针变量的运算 169

    10.2.6 以指针变量作为函数参数 170

    10.2.7 void类型的指针 173

    10.3 指针和数组 174

    10.3.1 数组元素的指针 174

    10.3.2 指向一维数组元素的指针变量 175

    10.3.3 通过指针引用数组元素 176

    10.3.4 以数组名作为函数参数 179

    10.4 指针和多维数组 180

    10.4.1 多维数组的地址 180

    10.4.2 指向多维数组的指针变量 182

    10.5 指针和字符串 185

    10.5.1 指针访问字符串 185

    10.5.2 以字符串指针作为函数参数 186

    10.5.3 字符串指针变量与字符数组的区别 187

    10.6 指针数组和多级指针 188

    10.6.1 指针数组 188

    10.6.2 多级指针的定义和应用 189

    10.6.3 指向指针的指针 191

    10.6.4 main函数的参数 191

    10.7 指针函数和函数指针 192

    10.7.1 指针函数 193

    10.7.2 函数指针 193

    10.8 技术解惑 195

    10.8.1 初始化指针时的注意事项 195

    10.8.2 为指针赋值时的注意事项 196

    10.8.3 当指针用于数组时的注意事项 197

    10.8.4 在结构中使用指针时的注意事项 197

    10.8.5 避免不必要的内存引用 198

    10.8.6 避免悬空指针和野指针 198

    10.8.7 数组下标与指针的效率解析 199

    10.8.8 使用指针时的常见错误 199

    10.9 课后练习 200

    第11章 数据的熔炉—结构体、共用体和枚举 202

    11.1 结构体 203

    11.1.1 定义结构体类型 203

    11.1.2 定义结构体类型变量 203

    11.1.3 引用结构体变量 205

    11.1.4 初始化结构体变量 206

    11.2 结构体数组 207

    11.2.1 定义结构体数组 208

    11.2.2 初始化结构体数组 209

    11.2.3 引用结构体数组 210

    11.3 结构体指针 211

    11.3.1 定义结构体指针变量 212

    11.3.2 初始化结构体指针变量 212

    11.3.3 引用结构体指针变量 212

    11.3.4 指向结构变量的指针 213

    11.3.5 指向结构体数组的指针 214

    11.4 在函数中使用结构体 214

    11.4.1 结构体变量和结构体指针可以作为函数参数 215

    11.4.2 函数可以返回结构体类型的值 215

    11.5 共用体(联合) 217

    11.5.1 定义共用体和共用体变量 217

    11.5.2 引用和初始化共用体变量 218

    11.6 枚举 219

    11.6.1 定义枚举类型 219

    11.6.2 定义枚举变量 220

    11.6.3 引用枚举变量 220

    11.7 typedef定义类型的作用 222

    11.7.1 类型定义符typedef的基础 222

    11.7.2 使用typedef 223

    11.8 技术解惑 224

    11.8.1 可以省略结构名吗 224

    11.8.2 是否可以定义一种通用数据类型以存储任意类型的数据 224

    11.8.3 结构和共用体的区别 224

    11.8.4 定义C结构体的问题 225

    11.9 课后练习 225

    第12章 链表 226

    12.1 动态内存分配 227

    12.1.1 动态内存分配的作用 227

    12.1.2 实现动态内存分配及管理的方法 227

    12.2 链表详解 230

    12.2.1 链表简介 230

    12.2.2 单向链表 231

    12.2.3 创建一个链表 233

    12.2.4 删除整个链表 234

    12.2.5 在链表中插入节点 234

    12.2.6 在链表中删除节点 235

    12.2.7 双向链表 236

    12.2.8 循环链表 237

    12.3 技术解惑 238

    12.3.1 链表的总结 238

    12.3.2 面试题—判断单链表是否有环 242

    12.3.3 面试题—实现单链表逆置 243

    12.4 课后练习 244

    第13章 位运算 245

    13.1 位运算符和位运算 246

    13.1.1 按位与运算 246

    13.1.2 按位或运算 247

    13.1.3 按位异或运算 247

    13.1.4 取反运算 248

    13.1.5 左移运算 248

    13.1.6 右移运算 249

    13.1.7 位运算的应用实例 249

    13.2 位域 251

    13.2.1 位域的定义和位域变量的说明 251

    13.2.2 位域的使用 252

    13.3 技术解惑 252

    13.3.1 二进制补码的运算公式 252

    13.3.2 面试题—从某个数中取出指定的某些位 252

    13.3.3 位域的内存对齐原则 253

    13.4 课后练习 253

    第14章 预编译处理 255

    14.1 预编译的基础 256

    14.2 宏定义 256

    14.2.1 不带参数的宏定义 256

    14.2.2 带参数的宏定义 258

    14.2.3 字符串化运算符 260

    14.2.4 并接运算符 260

    14.3 文件包含 260

    14.4 条件编译 262

    14.4.1 #ifdef… #else…#endif命令 262

    14.4.2 #if defined… #else…#endif 263

    14.4.3 #ifndef… #else…#endif 263

    14.4.4 #if !defined… #else…#endif 264

    14.4.5 #ifdef…#elif… #elif…#else… #endif 264

    14.5 技术解惑 265

    14.5.1 还有其他预编译指令吗 265

    14.5.2 带参的宏定义和函数不同 266

    14.5.3 C语言中预处理指令的总结 266

    14.5.4 预编译指令的本质 267

    14.5.5 sizeof(int)在预编译阶段是不会求值的 267

    14.5.6 多行预处理指令的写法 267

    14.6 课后练习 267

    第15章 文件操作 268

    15.1 文件 269

    15.1.1 文本文件 269

    15.1.2 文件分类 270

    15.2 文件指针 270

    15.3 文件的打开与关闭 271

    15.3.1 打开文件 271

    15.3.2 关闭文件 273

    15.4 文件读写 274

    15.4.1 字符读写函数 274

    15.4.2 字符串读写函数 276

    15.4.3 格式化读写函数 278

    15.4.4 数据块读写函数 279

    15.4.5 其他读写函数 280

    15.5 文件的随机读写 281

    15.5.1 fseek函数 281

    15.5.2 rewind函数 283

    15.5.3 ftell函数 283

    15.6 文件管理函数 284

    15.6.1 删除文件 284

    15.6.2 重命名文件 285

    15.6.3 复制文件 285

    15.7 文件状态检测函数 286

    15.7.1 feof函数 287

    15.7.2 ferror函数 287

    15.7.3 clearerr函数 287

    15.8 Win32 API中的文件操作函数 288

    15.8.1 创建和打开文件 288

    15.8.2 读取、写入和删除文件 289

    15.9 技术解惑 289

    15.9.1 文件指针是文件内部的位置指针吗 289

    15.9.2 fseek函数的换行问题 290

    15.9.3 怎样解决gets函数的溢出问题 290

    15.9.4 feof函数会多读一个数据吗 290

    15.9.5 流和文件的关系 290

    15.10 课后练习 291

    第16章 错误和程序调试 292

    16.1 常见错误分析 293

    16.1.1 语法错误 293

    16.1.2 逻辑错误(语义错误) 294

    16.1.3 内存错误 297

    16.2 错误的检出与分离 302

    16.3 调试时的注意事项 303

    16.3.1 上机前要先熟悉程序的运行环境 303

    16.3.2 在编程时要为调试做好准备 304

    16.4 技术解惑 304

    16.4.1 编译通过并不代表运行正确 304

    16.4.2 两段代码的编译差别 305

    16.4.3 调试程序的方法与技巧 305

    16.5 课后练习 307

    第17章 内存管理 308

    17.1 C语言中的内存模型 309

    17.2 栈和堆 309

    17.2.1 栈操作 309

    17.2.2 堆操作 310

    17.3 动态管理 311

    17.3.1 使用函数malloc动态分配内存空间 311

    17.3.2 使用函数calloc分配内存空间并初始化 312

    17.3.3 使用函数realloc重新分配内存 313

    17.3.4 使用函数free释放内存空间 314

    17.4 课后练习 315

    第18章 C语言高级编程技术 316

    18.1 C语言的高级编程技术 317

    18.2 分析文本的屏幕输出和键盘输入 317

    18.2.1 实现文本的屏幕输出 317

    18.2.2 实现键盘输入 322

    18.2.3 应用实例 323

    18.3 分析图形显示方式和鼠标输入 324

    18.3.1 初始化图形模式 325

    18.3.2 清屏和恢复显示函数 326

    18.3.3 建立独立图形程序 327

    18.3.4 基本绘图函数 327

    18.3.5 线性函数 330

    18.3.6 颜色控制函数 331

    18.3.7 填色函数和画图函数 334

    18.3.8 图形窗口函数 336

    18.3.9 分析图形方式下的文本输出函数 337

    18.4 菜单设计 340

    18.5 课后练习 343

    第19章 算法—抓住程序的灵魂 344

    19.1 我们对算法的理解 345

    19.1.1 算法是程序的灵魂 345

    19.1.2 何谓算法 345

    19.1.3 算法的特性 346

    19.2 算法表示法—流程图 347

    19.3 枚举算法 348

    19.3.1 枚举算法的基础 348

    19.3.2 实战演练—百钱买百鸡 348

    19.3.3 实战演练—填写运算符 349

    19.4 递推算法 351

    19.4.1 递推算法的基础 351

    19.4.2 实战演练—斐波那契数列 351

    19.4.3 实战演练—银行存款 353

    19.5 递归算法 354

    19.5.1 递归算法的基础 354

    19.5.2 实战演练—汉诺塔 355

    19.5.3 实战演练—阶乘 357

    19.6 分治算法 358

    19.6.1 分治算法的基础 358

    19.6.2 实战演练—大数相乘 358

    19.6.3 实战演练—欧洲冠军杯

     比赛日程安排 360

    19.7 贪心算法 362

    19.7.1 贪心算法的基础 363

    19.7.2 实战演练—装箱 363

    19.7.3 实战演练—找零方案 365

    19.8 试探法算法 366

    19.8.1 试探法算法的基础 366

    19.8.2 实战演练—八皇后 367

    19.8.3 实战演练—体彩29选7的组合 368

    19.9 迭代算法 370

    19.9.1 迭代算法的基础 370

    19.9.2 实战演练—求平方根 370

    19.10 模拟算法 371

    19.10.1 模拟算法的思路 371

    19.10.2 实战演练—猜数字游戏 372

    19.10.3 实战演练—掷骰子 游戏 372

    19.11 技术解惑 374

    19.11.1 衡量算法的标准 374

    19.11.2 选择使用枚举法的时机 375

    19.11.3 递推和递归的差异 376

    19.11.4 分治法解决问题的类型 376

    19.11.5 分治算法的机理 376

    19.11.6 贪婪算法并不是解决问题最优方案的原因 376

    19.11.7 回溯算法是否会影响算法效率 377

    19.11.8 递归算法与迭代算法的区别 377

    19.12 课后练习 377

    第20章 数据结构 379

    20.1 使用线性表 380

    20.1.1 线性表的特性 380

    20.1.2 顺序表操作 381

    20.1.3 实战演练—使用顺序表操作函数 385

    20.2 队列 386

    20.2.1 队列的定义 386

    20.2.2 实战演练—实现一个排号程序 387

    20.3 栈 390

    20.3.1 栈的定义 390

    20.3.2 实战演练—实现栈操作 390

    20.4 技术解惑 392

    20.4.1 线性表插入操作的时间复杂度 392

    20.4.2 线性表删除操作的时间复杂度 392

    20.4.3 线性表按值查找操作的时间复杂度 392

    20.4.4 线性表链接存储操作的11种算法 393

    20.4.5 堆和栈的区别 397

    20.5 课后练习 397

    第21章 网络编程技术 398

    21.1 OSI 7层网络模型 399

    21.2 TCP/IP 400

    21.2.1 IP 401

    21.2.2 TCP 402

    21.2.3 UDP 403

    21.2.4 ICMP 403

    21.3 使用C语言开发网络项目 404

    21.3.1 网络编程方式 404

    21.3.2 网络通信的基本流程 404

    21.3.3 搭建开发环境 405

    21.3.4 两个常用的数据结构 405

    21.3.5 Windows套接字的基础 406

    21.4 常用的Winsock函数 406

    21.4.1 WSAStartup函数 406

    21.4.2 socket函数 407

    21.4.3 inet_addr函数 407

    21.4.4 gethostbyname函数 407

    21.4.5 bind函数 407

    21.4.6 connect函数 407

    21.4.7 select函数 408

    21.4.8 recv函数 408

    21.4.9 sendto函数 408

    21.5 MAC地址 408

    21.6 NetBIOS编程 409

    21.6.1 处理过程 409

    21.6.2 NetBIOS命令 410

    21.6.3 NetBIOS名字解析 410

    21.6.4 NetBEUI 413

    21.6.5 NetBIOS的范围 413

    21.6.6 NetBIOS控制块 413

    21.7 实战演练—获取当前机器的MAC地址 413

    21.7.1 选择开发工具 413

    21.7.2 设计MFC窗体 414

    21.7.3 具体编码 414

    第22章 初入江湖—设计游戏项目 421

    22.1 游戏功能描述 422

    22.2 游戏总体设计 422

    22.2.1 功能模块设计 422

    22.2.2 数据结构设计 424

    22.2.3 构成函数介绍 425

    22.3 游戏的具体实现 426

    22.3.1 预处理 426

    22.3.2 主函数 429

    22.3.3 初始化界面处理 430

    22.3.4 时钟中断处理 431

    22.3.5 成绩、速度和帮助处理 431

    22.3.6 满行处理 432

    22.3.7 方块显示和消除处理 434

    22.3.8 方块判断处理 435

    第23章 风云再起—设计网络项目 438

    23.1 系统功能描述 439

    23.2 系统总体设计 439

    23.2.1 功能模块设计 439

    23.2.2 数据结构设计 441

    23.2.3 构成函数介绍 442

    23.3 系统的具体实现 442

    23.3.1 预处理 442

    23.3.2 初始化处理 444

    23.3.3 控制模块 444

    23.3.4 数据报解读处理 446

    23.3.5 Ping测试处理 447

    23.3.6 主函数 449

    第24章 炉火纯青—学生成绩管理系统 451

    24.1 系统总体描述 452

    24.1.1 项目开发的目标 452

    24.1.2 项目的意义 452

    24.1.3 系统功能描述 452

    24.2 系统总体设计 453

    24.2.1 功能模块设计 453

    24.2.2 数据结构设计 454

    24.2.3 构成函数介绍 455

    24.3 系统的具体实现 456

    24.3.1 预处理 456

    24.3.2 主函数 457

    24.3.3 系统主菜单函数 458

    24.3.4 表格显示信息 458

    24.3.5 信息查找定位 459

    24.3.6 格式化输入数据 459

    24.3.7 增加学生记录 460

    24.3.8 查询学生记录 461

    24.3.9 删除学生记录 462

    24.3.10 修改学生记录 463

    24.3.11 插入学生记录 463

    24.3.12 统计学生记录 464

    24.3.13 排序处理 465

    24.3.14 存储学生信息 466

    第25章 笑傲江湖—使用C51实现跑马灯程序 471

    25.1 单片机C语言基础 472

    25.1.1 单片机C语言的优越性 472

    25.1.2 C51的数据类型 472

    25.1.3 C51数据的存储结构 473

    25.1.4 C51运算符和表达式 474

    25.1.5 C51的中断函数 475

    25.2 跑马灯设计实例 476

    25.2.1 基本跑马灯的实现 476

    25.2.2 矩形波发生器 479

    25.2.3 用定时器/计数器产生矩形波 480

    25.3 一个完整的跑马灯程序 481

    25.3.1 电路设计 481

    25.3.2 程序设计 484
  • 内容简介:
    本书循序渐进、由浅入深地讲解了C语言开发的技术。全书共25章。本书不仅介绍了C语言的基础和核心知识(如开发工具、语法、运算符、表达式、输入/输出、流程控制、数组、字符串、函数),还讲解了C语言中的重点和难点(如指针、结构体、共用体和枚举、链表、位运算、预编译、文件操作、调试、内存管理、高级编程技术、算法、数据结构、网络编程技术等)。此外,本书还通过4个综合实例,介绍了C语言在综合项目中的应用。全书内容以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握C语言。
      本书不但适用C语言的初学者,也适合有一定C语言基础的读者学习,还可以作为大专院校相关专业的师生用书和培训学校的教材。
  • 作者简介:
    王长青,华为通信工程师,现负责电信BSS领域相关产品的详细架构设计和开发实施工作。熟悉面向对象技术及UML,15年C和C++开发经验,10年C#开发经验,熟悉相关的编译原理、数据结构、算法。精通Unix、Linux操作系统,且能熟练使用常用操作命令,并且熟悉该环境下的C/C++开发。
  • 目录:
    目  录

    第1章 C语言之定位 1

    1.1 计算机应用基础 2

    1.1.1 中央处理器 2

    1.1.2 位和字节 2

    1.1.3 二进制 2

    1.1.4 编码格式 3

    1.2 C语言的诞生 4

    1.3 第一印象的建立 5

    1.4 理解编译系统—学习的第一步 6

    1.5 技术解惑 7

    1.5.1 学习C语言还有用吗 7

    1.5.2 怎样学好C语言 8

    1.5.3 学好C语言的建议 8

    1.6 课后练习 8

    第2章 C语言开发工具详解 9

    2.1 用DOS开发C程序 10

    2.1.1 安装Turbo C 3.0 10

    2.1.2 使用Turbo C 3.0 10

    2.2 在Windows环境下使用

    Visual Studio 2017 11

    2.2.1 安装Visual Studio 2017 11

    2.2.2 使用Visual Studio 2017开发一个C程序 15

    2.3 使用轻量级开发工具DEV C++ 18

    2.3.1 安装DEV C++ 18

    2.3.2 使用DEV C++运行一个C程序 20

    2.4 使用Vsiual C++ 6.0开发C程序 20

    2.5 使用手机开发C程序 22

    2.6 技术解惑 23

    2.6.1 安装Visual Studio 2017时遇到的常见问题 23

    2.6.2 在Windows 7中安装Visual Studio时遇到的常见问题 24

    2.7 课后练习 24

    第3章 程序员基本素质的培养 25

    3.1 养成好的命名习惯 26

    3.2 C程序文件结构 26

    3.2.1 C程序的组成部分 26

    3.2.2 C程序的格式总结 27

    3.3 养成好的C语言编程风格 28

    3.3.1 随时使用缩进格式 28

    3.3.2 注意大括号的位置 28

    3.3.3 函数的规则 29

    3.3.4 注意注释 29

    3.4 如何成为一名优秀的程序员 29

    3.5 技术解惑 31

    3.6 课后练习 31

    第4章 C语言语法 32

    4.1 标识符和关键字 33

    4.2 最基本的数据类型 33

    4.3 常量和变量 34

    4.3.1 常量 35

    4.3.2 变量 36

    4.4 整型数据 37

    4.4.1 整型常量 38

    4.4.2 整型变量 39

    4.5 实型数据 41

    4.5.1 实型常量 41

    4.5.2 实型变量 42

    4.5.3 实型常量的类型 43

    4.6 字符型数据 43

    4.6.1 字符常量 43

    4.6.2 字符串常量 45

    4.6.3 字符变量 46

    4.7 初始化变量 47

    4.8 整型、实型和字符型数据间的运算总结 47

    4.8.1 自动转换 47

    4.8.2 强制转换 49

    4.9 技术解惑 49

    4.9.1 在C语言中无符号整型变量和有符号整型变量

    的定义 49

    4.9.2 在C语言中字符变量的含义 50

    4.9.3 如何理解字符型数据的取值范围 50

    4.9.4 怎样将带小数点的字符型数据转换成浮点型 50

    4.10 课后练习 51

    第5章 运算符和表达式 52

    5.1 运算符和表达式的概述 53

    5.1.1 运算符的种类 53

    5.1.2 运算符的优先级 54

    5.2 算术运算符和算术表达式 55

    5.2.1 单目运算符 55

    5.2.2 双目运算符 56

    5.3 赋值运算符和赋值表达式 56

    5.3.1 基本赋值运算符 56

    5.3.2 复合赋值运算符 57

    5.3.3 赋值表达式 58

    5.4 关系运算符和关系表达式 59

    5.4.1 关系运算符 59

    5.4.2 关系表达式 59

    5.5 逻辑运算符和逻辑表达式 60

    5.5.1 逻辑运算符 60

    5.5.2 逻辑表达式 60

    5.6 逗号运算符和逗号表达式 62

    5.6.1 逗号运算符 62

    5.6.2 逗号表达式 62

    5.7 求字节数的运算符 63

    5.8 技术解惑 64

    5.8.1 C语言运算符优先级的详情 64

    5.8.2 少数运算符在规定表达式中的求值顺序 65

    5.8.3 在C语言中是否可以进行混合运算 66

    5.8.4 在一个逻辑条件语句中常数项永远在左侧 66

    5.8.5 赋值处理的自动类型转换 66

    5.9 课后练习 67

    第6章 输入和输出 68

    6.1 C语句的初步知识 69

    6.1.1 C语句简介 69

    6.1.2 赋值语句 70

    6.2 打通任督二脉—数据输入和输出 71

    6.2.1 putchar函数 71

    6.2.2 getchar函数 72

    6.2.3 printf函数 73

    6.2.4 scanf函数 76

    6.2.5 puts函数 79

    6.2.6 C11标准函数gets_s 80

    6.3 技术解惑 80

    6.3.1 gets_s函数和scanf函数的区别 80

    6.3.2 克服gets_s函数的缺陷 81

    6.3.3 C语言的输入和输出问题 82

    6.4 课后练习 83

    第7章 流程控制 84

    7.1 最常见的顺序结构 85

    7.2 选择结构 85

    7.2.1 单分支结构语句 86

    7.2.2 双分支结构语句 87

    7.2.3 多分支结构语句 90

    7.2.4 条件运算符和条件表达式 91

    7.3 循环结构 92

    7.3.1 for语句 93

    7.3.2 while语句 94

    7.3.3 do…while语句 96

    7.3.4 正确对待goto语句 97

    7.3.5 break/continue跳跃 98

    7.3.6 死循环/退出程序 99

    7.4 技术解惑 100

    7.4.1 循环中的低效问题 100

    7.4.2 分析C语言循环语句的效率 101

    7.4.3 使用for循环语句的注意事项 102

    7.5 课后练习 102

    第8章 数组和字符串—数据的存在形式 104

    8.1 一维数组 105

    8.1.1 定义一维数组 105

    8.1.2 引用一维数组的元素 105

    8.1.3 初始化一维数组 106

    8.2 多维数组 107

    8.2.1 二维数组的用法 107

    8.2.2 多维数组的用法 110

    8.3 字符数组与字符串 112

    8.3.1 字符数组 112

    8.3.2 字符串与字符数组 113

    8.3.3 字符数组的输入和输出 113

    8.4 字符串处理函数 115

    8.4.1 测试字符串长度的函数 115

    8.4.2 字符串大小写转换函数 115

    8.4.3 字符串复制函数 116

    8.4.4 字符串比较函数 117

    8.4.5 字符串连接函数 119

    8.4.6 其他的字符串函数 119

    8.4.7 将字符串转换成数值的函数 120

    8.5 字符处理函数 121

    8.5.1 字符检测函数 121

    8.5.2 字符大小写转换函数 122

    8.6 技术解惑 123

    8.6.1 数组的下标总是从0开始吗 123

    8.6.2 C语言对数组的处理非常有效吗 124

    8.6.3 初始化一维数组的注意事项 124

    8.6.4 冒泡排序 125

    8.7 课后练习 125

    第9章 函数 126

    9.1 C函数的基础知识 127

    9.1.1 函数的分类 127

    9.1.2 函数的定义 128

    9.2 函数声明和函数原型 129

    9.3 函数的参数 131

    9.3.1 形参和实参 131

    9.3.2 以数组名作为函数的参数 132

    9.3.3 以数组作为函数的参数 133

    9.4 函数的返回值 135

    9.5 函数的调用 136

    9.5.1 函数调用的格式 136

    9.5.2 函数的调用方式 137

    9.5.3 被调函数的声明方式 138

    9.5.4 对调用函数的方式进行深入分析 139

    9.6 函数的嵌套调用和递归调用 140

    9.6.1 函数的嵌套调用 140

    9.6.2 函数的递归调用 142

    9.7 变量的作用域和生存期 145

    9.7.1 变量作用域 145

    9.7.2 静态存储变量和动态存储变量 147

    9.8 C的内部函数和外部函数 153

    9.8.1 内部函数 153

    9.8.2 外部函数 153

    9.9 库函数 154

    9.10 技术解惑 156

    9.10.1 通过Turbo C深入分析 项目文件 156

    9.10.2 要尽量避免不必要的函数调用 157

    9.10.3 请确保函数的声明和定义是静态的 158

    9.10.4 避免过长的main()函数 158

    9.10.5 函数的地址也是数据 160

    9.10.6 说明函数的时机 160

    9.10.7 一个函数可以有多少个参数 161

    9.10.8 如果一个函数没有返回值,是否需要加入return

     语句 162

    9.10.9 在程序退出main函数之后还有可能执行一部分代码 162

    9.10.10 exit()函数和return语句的差异 162

    9.11 课后练习 162

    第10章 指针 164

    10.1 基本概念 165

    10.2 变量的指针和指向变量的指针变量 165

    10.2.1 声明指针变量 166

    10.2.2 指针变量的初始化 166

    10.2.3 指针变量的引用 167

    10.2.4 关于指针运算符的说明 168

    10.2.5 指针变量的运算 169

    10.2.6 以指针变量作为函数参数 170

    10.2.7 void类型的指针 173

    10.3 指针和数组 174

    10.3.1 数组元素的指针 174

    10.3.2 指向一维数组元素的指针变量 175

    10.3.3 通过指针引用数组元素 176

    10.3.4 以数组名作为函数参数 179

    10.4 指针和多维数组 180

    10.4.1 多维数组的地址 180

    10.4.2 指向多维数组的指针变量 182

    10.5 指针和字符串 185

    10.5.1 指针访问字符串 185

    10.5.2 以字符串指针作为函数参数 186

    10.5.3 字符串指针变量与字符数组的区别 187

    10.6 指针数组和多级指针 188

    10.6.1 指针数组 188

    10.6.2 多级指针的定义和应用 189

    10.6.3 指向指针的指针 191

    10.6.4 main函数的参数 191

    10.7 指针函数和函数指针 192

    10.7.1 指针函数 193

    10.7.2 函数指针 193

    10.8 技术解惑 195

    10.8.1 初始化指针时的注意事项 195

    10.8.2 为指针赋值时的注意事项 196

    10.8.3 当指针用于数组时的注意事项 197

    10.8.4 在结构中使用指针时的注意事项 197

    10.8.5 避免不必要的内存引用 198

    10.8.6 避免悬空指针和野指针 198

    10.8.7 数组下标与指针的效率解析 199

    10.8.8 使用指针时的常见错误 199

    10.9 课后练习 200

    第11章 数据的熔炉—结构体、共用体和枚举 202

    11.1 结构体 203

    11.1.1 定义结构体类型 203

    11.1.2 定义结构体类型变量 203

    11.1.3 引用结构体变量 205

    11.1.4 初始化结构体变量 206

    11.2 结构体数组 207

    11.2.1 定义结构体数组 208

    11.2.2 初始化结构体数组 209

    11.2.3 引用结构体数组 210

    11.3 结构体指针 211

    11.3.1 定义结构体指针变量 212

    11.3.2 初始化结构体指针变量 212

    11.3.3 引用结构体指针变量 212

    11.3.4 指向结构变量的指针 213

    11.3.5 指向结构体数组的指针 214

    11.4 在函数中使用结构体 214

    11.4.1 结构体变量和结构体指针可以作为函数参数 215

    11.4.2 函数可以返回结构体类型的值 215

    11.5 共用体(联合) 217

    11.5.1 定义共用体和共用体变量 217

    11.5.2 引用和初始化共用体变量 218

    11.6 枚举 219

    11.6.1 定义枚举类型 219

    11.6.2 定义枚举变量 220

    11.6.3 引用枚举变量 220

    11.7 typedef定义类型的作用 222

    11.7.1 类型定义符typedef的基础 222

    11.7.2 使用typedef 223

    11.8 技术解惑 224

    11.8.1 可以省略结构名吗 224

    11.8.2 是否可以定义一种通用数据类型以存储任意类型的数据 224

    11.8.3 结构和共用体的区别 224

    11.8.4 定义C结构体的问题 225

    11.9 课后练习 225

    第12章 链表 226

    12.1 动态内存分配 227

    12.1.1 动态内存分配的作用 227

    12.1.2 实现动态内存分配及管理的方法 227

    12.2 链表详解 230

    12.2.1 链表简介 230

    12.2.2 单向链表 231

    12.2.3 创建一个链表 233

    12.2.4 删除整个链表 234

    12.2.5 在链表中插入节点 234

    12.2.6 在链表中删除节点 235

    12.2.7 双向链表 236

    12.2.8 循环链表 237

    12.3 技术解惑 238

    12.3.1 链表的总结 238

    12.3.2 面试题—判断单链表是否有环 242

    12.3.3 面试题—实现单链表逆置 243

    12.4 课后练习 244

    第13章 位运算 245

    13.1 位运算符和位运算 246

    13.1.1 按位与运算 246

    13.1.2 按位或运算 247

    13.1.3 按位异或运算 247

    13.1.4 取反运算 248

    13.1.5 左移运算 248

    13.1.6 右移运算 249

    13.1.7 位运算的应用实例 249

    13.2 位域 251

    13.2.1 位域的定义和位域变量的说明 251

    13.2.2 位域的使用 252

    13.3 技术解惑 252

    13.3.1 二进制补码的运算公式 252

    13.3.2 面试题—从某个数中取出指定的某些位 252

    13.3.3 位域的内存对齐原则 253

    13.4 课后练习 253

    第14章 预编译处理 255

    14.1 预编译的基础 256

    14.2 宏定义 256

    14.2.1 不带参数的宏定义 256

    14.2.2 带参数的宏定义 258

    14.2.3 字符串化运算符 260

    14.2.4 并接运算符 260

    14.3 文件包含 260

    14.4 条件编译 262

    14.4.1 #ifdef… #else…#endif命令 262

    14.4.2 #if defined… #else…#endif 263

    14.4.3 #ifndef… #else…#endif 263

    14.4.4 #if !defined… #else…#endif 264

    14.4.5 #ifdef…#elif… #elif…#else… #endif 264

    14.5 技术解惑 265

    14.5.1 还有其他预编译指令吗 265

    14.5.2 带参的宏定义和函数不同 266

    14.5.3 C语言中预处理指令的总结 266

    14.5.4 预编译指令的本质 267

    14.5.5 sizeof(int)在预编译阶段是不会求值的 267

    14.5.6 多行预处理指令的写法 267

    14.6 课后练习 267

    第15章 文件操作 268

    15.1 文件 269

    15.1.1 文本文件 269

    15.1.2 文件分类 270

    15.2 文件指针 270

    15.3 文件的打开与关闭 271

    15.3.1 打开文件 271

    15.3.2 关闭文件 273

    15.4 文件读写 274

    15.4.1 字符读写函数 274

    15.4.2 字符串读写函数 276

    15.4.3 格式化读写函数 278

    15.4.4 数据块读写函数 279

    15.4.5 其他读写函数 280

    15.5 文件的随机读写 281

    15.5.1 fseek函数 281

    15.5.2 rewind函数 283

    15.5.3 ftell函数 283

    15.6 文件管理函数 284

    15.6.1 删除文件 284

    15.6.2 重命名文件 285

    15.6.3 复制文件 285

    15.7 文件状态检测函数 286

    15.7.1 feof函数 287

    15.7.2 ferror函数 287

    15.7.3 clearerr函数 287

    15.8 Win32 API中的文件操作函数 288

    15.8.1 创建和打开文件 288

    15.8.2 读取、写入和删除文件 289

    15.9 技术解惑 289

    15.9.1 文件指针是文件内部的位置指针吗 289

    15.9.2 fseek函数的换行问题 290

    15.9.3 怎样解决gets函数的溢出问题 290

    15.9.4 feof函数会多读一个数据吗 290

    15.9.5 流和文件的关系 290

    15.10 课后练习 291

    第16章 错误和程序调试 292

    16.1 常见错误分析 293

    16.1.1 语法错误 293

    16.1.2 逻辑错误(语义错误) 294

    16.1.3 内存错误 297

    16.2 错误的检出与分离 302

    16.3 调试时的注意事项 303

    16.3.1 上机前要先熟悉程序的运行环境 303

    16.3.2 在编程时要为调试做好准备 304

    16.4 技术解惑 304

    16.4.1 编译通过并不代表运行正确 304

    16.4.2 两段代码的编译差别 305

    16.4.3 调试程序的方法与技巧 305

    16.5 课后练习 307

    第17章 内存管理 308

    17.1 C语言中的内存模型 309

    17.2 栈和堆 309

    17.2.1 栈操作 309

    17.2.2 堆操作 310

    17.3 动态管理 311

    17.3.1 使用函数malloc动态分配内存空间 311

    17.3.2 使用函数calloc分配内存空间并初始化 312

    17.3.3 使用函数realloc重新分配内存 313

    17.3.4 使用函数free释放内存空间 314

    17.4 课后练习 315

    第18章 C语言高级编程技术 316

    18.1 C语言的高级编程技术 317

    18.2 分析文本的屏幕输出和键盘输入 317

    18.2.1 实现文本的屏幕输出 317

    18.2.2 实现键盘输入 322

    18.2.3 应用实例 323

    18.3 分析图形显示方式和鼠标输入 324

    18.3.1 初始化图形模式 325

    18.3.2 清屏和恢复显示函数 326

    18.3.3 建立独立图形程序 327

    18.3.4 基本绘图函数 327

    18.3.5 线性函数 330

    18.3.6 颜色控制函数 331

    18.3.7 填色函数和画图函数 334

    18.3.8 图形窗口函数 336

    18.3.9 分析图形方式下的文本输出函数 337

    18.4 菜单设计 340

    18.5 课后练习 343

    第19章 算法—抓住程序的灵魂 344

    19.1 我们对算法的理解 345

    19.1.1 算法是程序的灵魂 345

    19.1.2 何谓算法 345

    19.1.3 算法的特性 346

    19.2 算法表示法—流程图 347

    19.3 枚举算法 348

    19.3.1 枚举算法的基础 348

    19.3.2 实战演练—百钱买百鸡 348

    19.3.3 实战演练—填写运算符 349

    19.4 递推算法 351

    19.4.1 递推算法的基础 351

    19.4.2 实战演练—斐波那契数列 351

    19.4.3 实战演练—银行存款 353

    19.5 递归算法 354

    19.5.1 递归算法的基础 354

    19.5.2 实战演练—汉诺塔 355

    19.5.3 实战演练—阶乘 357

    19.6 分治算法 358

    19.6.1 分治算法的基础 358

    19.6.2 实战演练—大数相乘 358

    19.6.3 实战演练—欧洲冠军杯

     比赛日程安排 360

    19.7 贪心算法 362

    19.7.1 贪心算法的基础 363

    19.7.2 实战演练—装箱 363

    19.7.3 实战演练—找零方案 365

    19.8 试探法算法 366

    19.8.1 试探法算法的基础 366

    19.8.2 实战演练—八皇后 367

    19.8.3 实战演练—体彩29选7的组合 368

    19.9 迭代算法 370

    19.9.1 迭代算法的基础 370

    19.9.2 实战演练—求平方根 370

    19.10 模拟算法 371

    19.10.1 模拟算法的思路 371

    19.10.2 实战演练—猜数字游戏 372

    19.10.3 实战演练—掷骰子 游戏 372

    19.11 技术解惑 374

    19.11.1 衡量算法的标准 374

    19.11.2 选择使用枚举法的时机 375

    19.11.3 递推和递归的差异 376

    19.11.4 分治法解决问题的类型 376

    19.11.5 分治算法的机理 376

    19.11.6 贪婪算法并不是解决问题最优方案的原因 376

    19.11.7 回溯算法是否会影响算法效率 377

    19.11.8 递归算法与迭代算法的区别 377

    19.12 课后练习 377

    第20章 数据结构 379

    20.1 使用线性表 380

    20.1.1 线性表的特性 380

    20.1.2 顺序表操作 381

    20.1.3 实战演练—使用顺序表操作函数 385

    20.2 队列 386

    20.2.1 队列的定义 386

    20.2.2 实战演练—实现一个排号程序 387

    20.3 栈 390

    20.3.1 栈的定义 390

    20.3.2 实战演练—实现栈操作 390

    20.4 技术解惑 392

    20.4.1 线性表插入操作的时间复杂度 392

    20.4.2 线性表删除操作的时间复杂度 392

    20.4.3 线性表按值查找操作的时间复杂度 392

    20.4.4 线性表链接存储操作的11种算法 393

    20.4.5 堆和栈的区别 397

    20.5 课后练习 397

    第21章 网络编程技术 398

    21.1 OSI 7层网络模型 399

    21.2 TCP/IP 400

    21.2.1 IP 401

    21.2.2 TCP 402

    21.2.3 UDP 403

    21.2.4 ICMP 403

    21.3 使用C语言开发网络项目 404

    21.3.1 网络编程方式 404

    21.3.2 网络通信的基本流程 404

    21.3.3 搭建开发环境 405

    21.3.4 两个常用的数据结构 405

    21.3.5 Windows套接字的基础 406

    21.4 常用的Winsock函数 406

    21.4.1 WSAStartup函数 406

    21.4.2 socket函数 407

    21.4.3 inet_addr函数 407

    21.4.4 gethostbyname函数 407

    21.4.5 bind函数 407

    21.4.6 connect函数 407

    21.4.7 select函数 408

    21.4.8 recv函数 408

    21.4.9 sendto函数 408

    21.5 MAC地址 408

    21.6 NetBIOS编程 409

    21.6.1 处理过程 409

    21.6.2 NetBIOS命令 410

    21.6.3 NetBIOS名字解析 410

    21.6.4 NetBEUI 413

    21.6.5 NetBIOS的范围 413

    21.6.6 NetBIOS控制块 413

    21.7 实战演练—获取当前机器的MAC地址 413

    21.7.1 选择开发工具 413

    21.7.2 设计MFC窗体 414

    21.7.3 具体编码 414

    第22章 初入江湖—设计游戏项目 421

    22.1 游戏功能描述 422

    22.2 游戏总体设计 422

    22.2.1 功能模块设计 422

    22.2.2 数据结构设计 424

    22.2.3 构成函数介绍 425

    22.3 游戏的具体实现 426

    22.3.1 预处理 426

    22.3.2 主函数 429

    22.3.3 初始化界面处理 430

    22.3.4 时钟中断处理 431

    22.3.5 成绩、速度和帮助处理 431

    22.3.6 满行处理 432

    22.3.7 方块显示和消除处理 434

    22.3.8 方块判断处理 435

    第23章 风云再起—设计网络项目 438

    23.1 系统功能描述 439

    23.2 系统总体设计 439

    23.2.1 功能模块设计 439

    23.2.2 数据结构设计 441

    23.2.3 构成函数介绍 442

    23.3 系统的具体实现 442

    23.3.1 预处理 442

    23.3.2 初始化处理 444

    23.3.3 控制模块 444

    23.3.4 数据报解读处理 446

    23.3.5 Ping测试处理 447

    23.3.6 主函数 449

    第24章 炉火纯青—学生成绩管理系统 451

    24.1 系统总体描述 452

    24.1.1 项目开发的目标 452

    24.1.2 项目的意义 452

    24.1.3 系统功能描述 452

    24.2 系统总体设计 453

    24.2.1 功能模块设计 453

    24.2.2 数据结构设计 454

    24.2.3 构成函数介绍 455

    24.3 系统的具体实现 456

    24.3.1 预处理 456

    24.3.2 主函数 457

    24.3.3 系统主菜单函数 458

    24.3.4 表格显示信息 458

    24.3.5 信息查找定位 459

    24.3.6 格式化输入数据 459

    24.3.7 增加学生记录 460

    24.3.8 查询学生记录 461

    24.3.9 删除学生记录 462

    24.3.10 修改学生记录 463

    24.3.11 插入学生记录 463

    24.3.12 统计学生记录 464

    24.3.13 排序处理 465

    24.3.14 存储学生信息 466

    第25章 笑傲江湖—使用C51实现跑马灯程序 471

    25.1 单片机C语言基础 472

    25.1.1 单片机C语言的优越性 472

    25.1.2 C51的数据类型 472

    25.1.3 C51数据的存储结构 473

    25.1.4 C51运算符和表达式 474

    25.1.5 C51的中断函数 475

    25.2 跑马灯设计实例 476

    25.2.1 基本跑马灯的实现 476

    25.2.2 矩形波发生器 479

    25.2.3 用定时器/计数器产生矩形波 480

    25.3 一个完整的跑马灯程序 481

    25.3.1 电路设计 481

    25.3.2 程序设计 484
查看详情
相关图书 / 更多
C编程从入门到实践
C编译原理(第二版)——21世纪高等院校计算机系列课程教材
陈英 主编
C编程从入门到实践
C编程技巧:117个问题解决方案示例 印谢瑞什·查万Shirish Chavan 著 卢涛 译 译
[印]谢瑞什·查万(Shirish Chavan)
C编程从入门到实践
C编译器剖析
邹昌伟
C编程从入门到实践
C编程方法学
李民 主编;王舜燕
您可能感兴趣 / 更多
C编程从入门到实践
卫生管理学·全国中医药行业高等教育“十四五”规划教材
王长青 主编;乔学斌
C编程从入门到实践
一人一世界(跨越北极和南极的心灵之旅)
王长青 著
C编程从入门到实践
传统医学融入卫生系统的实践与探索
王长青 著
C编程从入门到实践
仓储与配送管理实务
王长青、宫胜利、岳红 编
C编程从入门到实践
矩阵论
王长青;李爱军
C编程从入门到实践
大学生就业创业指导
王长青 著
C编程从入门到实践
大学生职业生涯规划与发展
王长青 著
C编程从入门到实践
卫生管理学(新世纪第2版 供公共事业管理、工商管理、市场营销等专业用)
王长青 编
C编程从入门到实践
空间系绳系统动力学建模与控制
王长青、李爱军 著
C编程从入门到实践
公立医院外部监管研究
王长青 著
C编程从入门到实践
健康有道---教师中医保健知识读本
王长青 编;张同远 主编
C编程从入门到实践
解读武夷山
王长青