科技>计算机>编程语言
C语言程序设计

C语言程序设计"

作者:丁发红
ISBN:9787121393099
定价:¥40.0
字数:426千字
页数:280
出版时间:2020-08
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

C 语言做了全面、详细、系统的介绍,全书共分十二个项目,按照程序设计的知识体系,由浅入深、循序渐进地介绍了C 语言编程中用到的知识要点,主要内容包括C 语言的基本知识、数据类型及其运算、C 语言的基本语句、选择结构程序设计、循环结构程序设计、数组的应用、函数、指针的应用、结构体和共用体、位运算、文件操作、C 程序应用举例。本书结构严谨、要点突出,实例丰富,具有很强的实用性,是初学者学习C 语言的必备书籍。 本书可作为普通高等教育院校和高等职业院校计算机及相关专业的高级语言教材,也可供C 语言爱好者学习使用。

前言

C 语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述 语言,既可以编写操作系统,也可以编写应用软件。 在这个各种编程技术层出不穷的时代,C 语言不但没有像其他一些语言那样被淘汰, 反而越发地受到人们的重视和喜爱。这主要归功于C 语言拥有强大的功能及其他编程语言 所无法比拟的优点。系统级程序设计、嵌入式系统开发、工业自动控制、人工智能等领域 都是C 语言大显身手的舞台。 C 语言是一种通用的程序设计语言,它在很多方面继承和发展了以往许多高级程序设 计语言的成功经验和特色。 C 语言结构简单、使用灵活,非常适合作为程序设计学习的入门级语言。本书按照程 序设计领域对中、低端编程岗位的需求,兼顾高端计算机软件编程参考书籍的需求,按照 高职院校计算机相关专业人才培养方向,结合全国计算机等级考试重点、难点知识的讲解, 由浅入深、逐步推进、让学生轻松掌握C 语言的语法知识,培养学生编写、调试程序的技 能,并使其掌握一定的应用程序开发能力。 目前在讲解C 语言的教材中,普遍存在两种不足:一是有些教材讲解过于琐碎,反而 导致要点不突出,重点知识散布于文字的海洋之中,使学习者难以提纲挈领,掌握精华; 二是多数教材过于注重理论讲解,缺乏实例来佐证、诠释深奥而枯燥的理论知识。有时候 往往一个典型的实例一下子能够说明很多道理,而不必大费笔墨再用文字讲解。在认识到 以上不足的基础上,笔者结合长期教学实践中积累的经验,以通过全国计算机等级考试二 级C 语言程序设计为目的编写了本书,是一本用实例来诠释理论的理想教材。 全书共分十二个项目,按照程序设计的知识体系,由浅入深、循序渐进地介绍了C 语 言编程中用到的知识要点,主要内容包括C 语言的基本知识、数据类型及其运算、C 语言 的基本语句、选择结构程序设计、循环结构程序设计、数组的应用、函数、指针的应用、 结构体和共用体、位运算、文件操作、C 程序应用举例。 iv 本书结构严谨、要点突出,实例丰富,具有很强的实用性,是初学者学习C 语言的必 备书籍。 由于编者水平有限,书中难免存在疏漏之处,欢迎大家批评指正,衷心希望广大使用 者尤其是任课教师提出宝贵的意见和建议,以便再版时及时加以修正。最后衷心感谢所有 为本书编写作出帮助的人们! 编者 2020 年5 月

目录

项目一 C 语言的基本知识 ............................................................................. 1 1.1 C 语言的发展 ................................................................................................................ 1 1.2 C 语言的特点 ................................................................................................................ 3 1.2.1 C 语言的特色 ..................................................................................................... 3 1.2.2 C 语言的优点 ..................................................................................................... 5 1.2.3 C 语言的缺点 ..................................................................................................... 6 1.2.4 C 语言的现状和前景 ......................................................................................... 6 1.3 C 程序的基本构成 ........................................................................................................ 7 1.4 C 程序的书写风格 ........................................................................................................ 9 1.5 C 程序的基本单位——函数 ....................................................................................... 10 1.6 C 程序的上机步骤 ...................................................................................................... 12 1.7 Visual C++ 6.0 .............................................................................................................. 13 1.8 Code Blocks .................................................................................................................. 17 1.9 编程语言及算法 .......................................................................................................... 24 1.9.1 第一阶段:机器语言 ....................................................................................... 24 1.9.2 第二阶段:汇编语言 ....................................................................................... 24 1.9.3 第三阶段:高级语言 ....................................................................................... 24 1.9.4 第四阶段:面向对象或面向问题的高级语言 ............................................... 25 1.9.5 什么是算法 ....................................................................................................... 25 1.9.6 算法的特点 ....................................................................................................... 25 1.9.7 算法的表示方法 ............................................................................................... 26 1.9.8 算法分析 ........................................................................................................... 29 项目小结 ............................................................................................................................... 29 项目二 数据类型及其运算 ........................................................................... 30 2.1 标识符 .......................................................................................................................... 31 2.2 C 语言的数据类型 ...................................................................................................... 32 2.3 常量 .............................................................................................................................. 32 vi 2.3.1 常量的概念 ....................................................................................................... 32 2.3.2 整型常量 ........................................................................................................... 32 2.3.3 实型常量 ........................................................................................................... 33 2.3.4 字符型常量 ....................................................................................................... 33 2.3.5 字符串常量 ....................................................................................................... 34 2.3.6 符号常量 ........................................................................................................... 35 2.4 变量 .............................................................................................................................. 35 2.4.1 变量的定义 ....................................................................................................... 35 2.4.2 整型变量 ........................................................................................................... 36 2.4.3 实型变量 ........................................................................................................... 37 2.4.4 字符型变量 ....................................................................................................... 40 2.5 数据类型的自动转换和强制转换 .............................................................................. 41 2.6 C 语言的运算符 .......................................................................................................... 42 2.6.1 算术运算符 ....................................................................................................... 42 2.6.2 关系运算符 ....................................................................................................... 43 2.6.3 逻辑运算符 ....................................................................................................... 43 2.6.4 自增自减运算符 ............................................................................................... 44 2.6.5 赋值运算符 ....................................................................................................... 45 2.6.6 复合运算符 ....................................................................................................... 45 2.6.7 条件运算符 ....................................................................................................... 46 2.6.8 逗号运算符 ....................................................................................................... 47 2.6.9 位运算符 ........................................................................................................... 47 2.6.10 sizeof 运算符................................................................................................... 47 2.7 表达式与求值原则 ...................................................................................................... 49 2.7.1 表达式的概念 ................................................................................................... 49 2.7.2 算术表达式 ....................................................................................................... 50 2.7.3 关系表达式 ....................................................................................................... 50 2.7.4 逻辑表达式 ....................................................................................................... 50 2.7.5 条件表达式 ....................................................................................................... 51 2.7.6 赋值表达式 ....................................................................................................... 52 2.8 运算符的优先级与结合性 .......................................................................................... 52 项目小结 ............................................................................................................................... 54 项目三 C 语言的基本语句 ........................................................................... 55 3.1 C 语言的语句类型 ...................................................................................................... 55 3.1.1 表达式语句 ....................................................................................................... 56 3.1.2 复合语句 ........................................................................................................... 57 3.1.3 空语句 ............................................................................................................... 57 vii 3.1.4 转向语句和语句标号的使用 ........................................................................... 58 3.2 数据输出 ...................................................................................................................... 61 3.2.1 格式输出函数printf ......................................................................................... 62 3.2.2 字符输出函数putchar ...................................................................................... 66 3.3 数据输入 ...................................................................................................................... 66 3.3.1 格式输入函数scanf .......................................................................................... 66 3.3.2 字符输入函数getchar ...................................................................................... 68 项目小结 ............................................................................................................................... 69 项目四 选择结构程序设计 ........................................................................... 70 4.1 用if 语句实现选择结构 .............................................................................................. 71 4.1.1 单边选择结构 ................................................................................................... 71 4.1.2 双边选择结构 ................................................................................................... 72 4.1.3 关于if 语句的归纳说明 ................................................................................... 73 4.1.4 if 语句的嵌套 .................................................................................................... 75 4.2 用switch 语句实现多边选择结构.............................................................................. 76 4.2.1 格式 ................................................................................................................... 76 4.2.2 含义及逻辑结构 ............................................................................................... 76 4.2.3 关于switch 语句的说明 ................................................................................... 77 项目小结 ............................................................................................................................... 80 项目五 循环结构程序设计 ........................................................................... 81 5.1 for 循环结构 ................................................................................................................ 82 5.1.1 格式说明 ........................................................................................................... 82 5.1.2 for 语句常见形式 ............................................................................................. 84 5.1.3 break 语句 ......................................................................................................... 88 5.1.4 continue 语句 .................................................................................................... 89 5.2 while 循环结构 ............................................................................................................ 90 5.3 do…while 循环结构 .................................................................................................... 92 5.4 循环嵌套 ...................................................................................................................... 93 5.4.1 for、while、do…while 三种循环结构的嵌套 ............................................... 93 5.4.2 for、while、do…while 三种循环结构可以互相嵌套 ................................... 94 5.4.3 关于循环嵌套的几点注意事项 ....................................................................... 95 5.5 break 语句和continue 语句 ........................................................................................ 96 5.6 三种循环结构的总结 .................................................................................................. 99 5.7 循环结构应用举例 .................................................................................................... 100 项目小结 ............................................................................................................................. 103 viii 项目六 数组的应用 .................................................................................... 104 6.1 一维数组 .................................................................................................................... 105 6.1.1 一维数组的定义 ............................................................................................. 105 6.1.2 引用一维数组的元素 ..................................................................................... 106 6.1.3 关于一维数组定义的补充说明 ..................................................................... 107 6.1.4 数组元素的内存分配 ..................................................................................... 108 6.1.5 一维数组的初始化 ......................................................................................... 109 6.1.6 一维数组的输入、遍历和输出 ..................................................................... 109 6.1.7 一维数组的应用举例 ..................................................................................... 110 6.2 二维数组 ..................................................................................................................... 111 6.2.1 二维数组的定义 .............................................................................................. 111 6.2.2 二维数组的引用 .............................................................................................. 111 6.2.3 二维数组的初始化赋值 ................................................................................. 112 6.2.4 二维数组的输入、遍历和输出 ..................................................................... 114 6.3 字符串和字符数组 .................................................................................................... 115 6.3.1 字符数组的定义和初始化 ............................................................................. 115 6.3.2 字符数组的输入和输出 ................................................................................. 117 6.3.3 字符串处理函数 ............................................................................................. 117 项目小结 ............................................................................................................................. 121 项目七 函数 ............................................................................................... 122 7.1 函数概述 .................................................................................................................... 123 7.2 函数的分类 ................................................................................................................ 123 7.2.1 从函数定义的角度分类 ................................................................................. 123 7.2.2 从函数功能的角度分类 ................................................................................. 124 7.2.3 从主调函数和被调函数之间数据传送的角度分类 ..................................... 124 7.3 函数的定义 ................................................................................................................ 125 7.3.1 无参函数的定义 ............................................................................................. 125 7.3.2 有参函数的定义 ............................................................................................. 126 7.3.3 空函数 ............................................................................................................. 127 7.3.4 函数定义的补充说明 ..................................................................................... 127 7.4 函数的类型和返回值 ................................................................................................ 128 7.5 形参与实参及函数值的传递 .................................................................................... 130 7.5.1 形式参数和实际参数 ..................................................................................... 130 7.5.2 实参到形参的数据传递方式 ......................................................................... 131 7.5.3 利用参数返回结果 ......................................................................................... 133 ix 7.5.4 利用函数返回值传递数据 ............................................................................. 134 7.6 函数的调用 ................................................................................................................ 134 7.7 函数的嵌套调用 ........................................................................................................ 136 7.8 函数的递归调用 ........................................................................................................ 137 7.9 变量的作用域及存储特性 ........................................................................................ 139 7.9.1 变量的作用域 ................................................................................................. 139 7.9.2 变量的存储特性 ............................................................................................. 140 7.10 内部函数与外部函数 .............................................................................................. 140 7.10.1 内部函数 ....................................................................................................... 140 7.10.2 外部函数 ....................................................................................................... 140 项目小结 ............................................................................................................................. 140 项目八 指针的应用 .................................................................................... 142 8.1 指针和指针变量 ........................................................................................................ 143 8.1.1 什么是指针 ..................................................................................................... 143 8.1.2 什么是指针变量 ............................................................................................. 144 8.1.3 如何定义指针变量 ......................................................................................... 144 8.1.4 指针变量的初始化 ......................................................................................... 145 8.1.5 空指针 ............................................................................................................. 146 8.1.6 指针的运算 ..................................................................................................... 146 8.1.7 如何引用指针变量 ......................................................................................... 148 8.2 用指针访问数组 ........................................................................................................ 150 8.2.1 指针与数组的关系 ......................................................................................... 150 8.2.2 指向数组的指针变量 ..................................................................................... 150 8.2.3 数组名和指向数组的指针变量的区别 ......................................................... 151 8.2.4 利用指针访问数组 ......................................................................................... 151 8.2.5 用指针访问二维数组 ..................................................................................... 152 8.2.6 动态申请存储空间 ......................................................................................... 155 8.2.7 指向多维数组的指针变量 ............................................................................. 156 8.2.8 数组名作函数参数 ......................................................................................... 156 8.2.9 用指向数组的指针变量作函数参数 ............................................................. 157 8.3 字符串与指针 ............................................................................................................ 159 8.4 指向函数的指针 ........................................................................................................ 161 8.5 用指针作函数参数 .................................................................................................... 163 8.5.1 用指向函数的指针作函数参数 ..................................................................... 163 8.5.2 用指向变量的指针作函数参数 ..................................................................... 165 8.5.3 用指向字符串的指针作函数参数 ................................................................. 166 8.6 指针型函数 ................................................................................................................ 166 x 8.7 指针数组 .................................................................................................................... 168 8.8 指向指针的指针 ........................................................................................................ 170 8.8.1 多级指针的概念 ............................................................................................. 170 8.8.2 二级指针的定义和使用 ................................................................................. 170 8.9 main 函数命令行参数 ............................................................................................... 171 项目小结 ............................................................................................................................. 173 项目九 结构体和共用体 ............................................................................. 174 9.1 结构体类型 ................................................................................................................ 175 9.1.1 认识结构体类型 ............................................................................................. 175 9.1.2 结构体类型的定义 ......................................................................................... 175 9.2 结构体变量 ................................................................................................................ 177 9.2.1 结构体变量的定义 ......................................................................................... 177 9.2.2 结构体变量的存储模式 ................................................................................. 178 9.2.3 结构体变量的引用 ......................................................................................... 178 9.2.4 结构体变量的基本操作 ................................................................................. 179 9.3 结构体数组 ................................................................................................................ 182 9.3.1 结构体数组的定义和引用 ............................................................................. 182 9.3.2 结构体数组的初始化 ..................................................................................... 182 9.4 结构体指针 ................................................................................................................ 185 9.4.1 结构体指针的定义 ......................................................................................... 185 9.4.2 结构体数组的指针 ......................................................................................... 187 9.4.3 通过结构体指针引用结构体变量 ................................................................. 188 9.4.4 结构体类型的指针作函数参数 ..................................................................... 189 9.5 链表 ............................................................................................................................ 191 9.5.1 链表概述 ......................................................................................................... 191 9.5.2 链表的基本操作 ............................................................................................. 192 9.5.3 链表综合应用举例 ......................................................................................... 196 9.6 共用体 ........................................................................................................................ 199 9.6.1 共用体的定义 ................................................................................................. 199 9.6.2 共用体变量的引用 ......................................................................................... 200 9.6.3 共用体类型数据的特点 ................................................................................. 201 9.7 枚举类型 .................................................................................................................... 202 9.7.1 枚举类型及枚举型变量的定义 ..................................................................... 202 9.7.2 枚举类型的应用 ............................................................................................. 203 9.8 自定义类型 ................................................................................................................ 203 项目小结 ............................................................................................................................. 205 xi 项目十 位运算 ........................................................................................... 206 10.1 原码、反码和补码 .................................................................................................. 207 10.2 位运算符的含义 ...................................................................................................... 207 10.3 位运算举例 .............................................................................................................. 213 10.4 位段 .......................................................................................................................... 215 10.4.1 位段的概念 ................................................................................................... 215 10.4.2 位段的定义 ................................................................................................... 216 10.4.3 位段数据的引用 ........................................................................................... 217 10.5 C 语言内嵌汇编语言 .............................................................................................. 219 10.5.1 两种实现方式 ............................................................................................... 220 10.5.2 调用规则 ....................................................................................................... 222 10.5.3 把参数返回C 程序 ...................................................................................... 223 10.5.4 把汇编语言程序与C 语言程序链接到一起 .............................................. 223 10.5.5 GCC 使用的内嵌汇编语法格式 .................................................................. 223 项目小结 ............................................................................................................................. 225 项目十一 文件操作 .................................................................................... 226 11.1 文件概述 .................................................................................................................. 227 11.1.1 文件的概念 ................................................................................................... 227 11.1.2 流(stream)的概念 .................................................................................... 227 11.1.3 文本文件 ....................................................................................................... 228 11.1.4 二进制文件 ................................................................................................... 228 11.1.5 缓冲文件系统 ............................................................................................... 229 11.2 文件的打开和关闭 .................................................................................................. 229 11.2.1 文件类型指针 ............................................................................................... 229 11.2.2 文件类型指针的定义 ................................................................................... 230 11.2.2 文件的打开和关闭 ....................................................................................... 230 11.3 文件的读写操作 ...................................................................................................... 232 11.3.1 字符读写函数fgetc、fputc .......................................................................... 232 11.3.2 字符串读写函数fgets、fputs ...................................................................... 234 11.3.3 数据块读写函数fread、fwrite .................................................................... 235 11.3.4 格式化读写函数fscanf、fprintf .................................................................. 238 11.4 文件定位函数 .......................................................................................................... 240 11.4.1 文件定位标记的重置函数rewind ............................................................... 240 11.4.2 取文件当前位置函数ftell ............................................................................ 240 11.4.3 文件读写的定位函数fseek .......................................................................... 240 xii 11.5 出错检测函数 .......................................................................................................... 243 11.5.1 ferror 函数 ..................................................................................................... 243 11.5.2 clearerr 函数 .................................................................................................. 243 11.6 补充介绍几个读写函数 .......................................................................................... 243 11.6.1 用fgetc 和fputc 函数实现的fgetw 和fputw 函数 .................................... 243 11.6.2 用fgetc 和fputc 函数实现的fgetf 和fputf 函数 ....................................... 244 11.6.3 fgets 和fputs 的实现算法 ............................................................................ 245 11.7 文件操作中的共性步骤 .......................................................................................... 246 11.8 C 语言文件操作举例 ............................................................................................... 248 项目小结 ............................................................................................................................. 249 项目十二 C 程序应用举例 ......................................................................... 250 12.1 Josephus 问题 ........................................................................................................... 251 12.2 排序问题 .................................................................................................................. 253 12.2.1 希尔排序 ....................................................................................................... 253 12.2.2 二分查找法 ................................................................................................... 256 12.2.3 直接插入法 ................................................................................................... 257 12.2.4 带哨兵的直接插入法 ................................................................................... 258 12.2.5 冒泡排序法 ................................................................................................... 259 12.2.6 选择排序法 ................................................................................................... 260 12.3 字符串处理问题 ...................................................................................................... 262 12.4 密码破译问题 .......................................................................................................... 266 项目小结 ............................................................................................................................. 267 参考文献 ...................................................................................................... 268

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个