目录 第1章程序设计语言基础1 1.1计算机程序1 1.2程序设计语言1 1.3最简单的C语言程序2 1.4C语言的开发环境3 1.5C程序的开发步骤5 思考与练习5 第2章C语言的符号体系和规则体系6 2.1数据概述6 标识符、关键字、常量及变量7 2.2基本数据类型10 2.2.1整型数据10 2.2.2实型数据13 2.2.3字符型数据15 2.3运算符19 2.3.1基本的算术运算符19 2.3.2不同类型数据间的混合运算20 2.3.3强制类型转换运算符21 2.3.4运算符优先级和结合性21 2.3.5上溢和下溢23 2.3.6自增运算符和自减运算符23 2.3.7复合赋值运算符24 2.4基本数据类型与运算符举例26 2.4.1查找关键字26 2.4.2标识符的定义26 2.4.3表达式求值27 思考与练习29 第3章按部就班——顺序结构程序设计31 3.1程序设计的基本步骤及程序执行的流程31 3.2算法及其表示形式31 3.2.1用自然语言表示算法31 3.2.2用流程图表示算法32 3.2.3用伪代码表示算法33 3.3实际问题引例34 3.4C语句35 3.4.1分类35 3.4.2赋值语句36 3.5数据的输入/输出38 3.5.1数据输入/输出的概念38 3.5.2字符数据的输入/输出39 3.6顺序结构程序设计举例46 思考与练习53 〖1〗C 语 言 程 序 设 计 面 向 实 践 能 力 培 养〖1〗〖2〗〖2〗目 录 第4章程序决策——选择结构程序设计57 4.1实际问题引例57 4.2条件判断57 4.2.1关系运算符和关系表达式57 4.2.2逻辑运算符和逻辑表达式58 4.3用if语句实现选择结构60 4.3.1if语句的3种形式60 4.3.2if语句的嵌套63 4.3.3条件运算符与表达式65 4.4利用switch语句实现多分支选择结构67 4.5选择结构程序设计举例69 思考与练习76 第5章周而复始——循环结构程序设计80 5.1实际问题引例80 5.2循环的概念80 5.3用while语句实现循环81 5.3.1while语句的基本形式81 5.3.2while语句特点和说明81 5.4用dowhile语句实现循环84 5.4.1dowhile语句的基本形式84 5.4.2dowhile语句特点和说明84 5.4.3while和dowhile循环的比较85 5.4.4while与dowhile循环程序举例85 5.5用for语句实现循环87 5.5.1for语句的一般形式87 5.5.2for语句的各种形式88 5.5.3for循环程序举例89 5.6循环的嵌套91 5.7用break语句和continue语句改变循环状态92 5.7.1用break语句提前退出循环92 5.7.2用continue语句提前结束本次循环93 5.8基于循环的简单算法95 5.8.1穷举法95 5.8.2程序加密96 5.9循环结构程序设计举例96 思考与练习104 第6章数组——具有相同数据类型的一组数109 6.1数组的概念109 6.2数组实际问题引例109 6.3一维数组的定义和使用110 6.3.1一维数组的定义110 6.3.2一维数组的引用111 6.3.3一维数组的初始化113 6.3.4一维数组应用举例114 6.4二维数组117 6.4.1二维数组的定义117 6.4.2二维数组的引用118 6.4.3二维数组的初始化119 6.4.4二维数组应用举例119 6.5字符数组与字符串124 6.5.1字符数组的定义与初始化124 6.5.2字符串124 6.5.3字符数组的输入与输出125 6.5.4字符串处理函数127 6.5.5字符串处理应用举例130 6.6数组综合案例134 思考与练习151 第7章函数——模块化程序设计157 7.1函数的基本概念157 7.1.1函数概述157 7.1.2函数的概念158 7.1.3函数的分类158 7.2函数实际问题引例158 7.3函数的定义159 7.4函数的调用163 7.4.1函数调用的方式163 7.4.2函数调用时的参数传递164 7.4.3函数的返回值168 7.4.4函数声明169 7.5数组名作函数参数问题170 7.5.1一维数组名作函数参数171 7.5.2二维数组名作函数参数174 7.5.3多维数组的情况177 7.6函数的嵌套调用和递归调用177 7.6.1函数的嵌套调用178 7.6.2函数的递归调用181 7.7变量的作用域和存储方式186 7.7.1变量的作用域186 7.7.2变量的存储方式193 7.8内部函数与外部函数197 7.9编译预处理198 7.9.1宏定义198 7.9.2文件包含201 7.9.3条件编译201 7.10函数综合案例205 思考与练习215 第8章指针——内存与地址操作222 8.1指针程序设计引例222 8.2指针的基础概念223 8.2.1内存地址223 8.2.2指针223 8.2.3指针变量224 8.3指针变量的声明及赋值225 8.3.1指针变量的声明225 8.3.2指针变量的赋值225 8.4指针变量的使用228 8.4.1指针变量与被指向变量的等价原则228 8.4.2通过一维指针变量p间接访问参照物a228 8.4.3通过二维指针变量q间接访问参照物a229 8.4.4关于符号“”和“&”的说明229 8.5指针与数组230 8.5.1数组元素的指针230 8.5.2指向一维数组的指针变量231 8.5.3指向高维数组的指针变量238 8.6指针与字符串250 8.6.1字符串的引用方式250 8.6.2字符数组与字符指针变量的不同255 8.7动态内存分配255 8.8指针数组261 8.8.1指针数组的定义261 8.8.2指针数组的应用262 8.8.3指向指针数组的指针变量266 8.9指针与函数268 8.9.1指针变量作为函数参数268 8.9.2用指向数组的指针作为函数参数271 8.9.3字符指针作为函数参数273 8.9.4返回指针的函数275 8.9.5指向函数的指针变量276 8.10综合案例282 思考与练习287 第9章结构体与共用体——聚合不同属性的数据类型294 9.1用户自定义类型引例294 9.2结构体数据类型295 9.2.1结构体类型定义295 9.2.2结构体类型变量296 9.2.3结构体变量的引用299 9.2.4结构体变量的初始化301 9.3结构体数组304 9.3.1结构体数组定义305 9.3.2结构体数组的使用306 9.4指向结构体的指针变量308 9.4.1结构体指针变量定义及使用308 9.4.2结构体数组的指针311 9.5结构体与函数312 9.5.1结构体变量作为函数参数求解312 9.5.2结构体指针变量作为函数参数求解315 9.5.3使用结构体数组作为函数参数318 9.6链表320 9.6.1链表基础知识321 9.6.2静态链表的操作323 9.6.3动态链表的操作328 9.7共用体数据类型350 9.7.1共用体类型的定义350 9.7.2共用体变量的定义351 9.7.3共用体变量的引用353 9.7.4共用体变量的赋值353 9.8枚举数据类型354 9.8.1枚举类型的定义354 9.8.2枚举变量的声明355 9.8.3枚举变量的引用356 9.8.4枚举变量的赋值357 9.9综合案例361 思考与练习368 第10章文件——程序的辅助性存储372 10.1文件的相关概念372 10.1.1文件应用概述372 10.1.2文件的定义372 10.1.3文件标识373 10.1.4二进制文件与文本文件373 10.1.5文件缓冲区374 10.1.6FILE结构体与指向文件的指针变量374 10.2文件实际问题引例375 10.3文件的打开与关闭376 10.3.1打开文件376 10.3.2关闭文件378 10.4文件的顺序读写378 10.4.1字符数据的顺序读写379 10.4.2字符串的顺序读写382 10.4.3文本文件的格式化读写385 10.4.4二进制数据的顺序读写387 10.5文件的随机读写391 10.5.1文件位置标记391 10.5.2读写位置定位及随机读写的实现392 10.6文件读写综合案例396 思考与练习399第11章综合实践——产品信息管理系统403 11.1系统功能需求分析403 11.2系统设计404 11.2.1系统功能架构设计404 11.2.2数据结构设计404 11.3系统编码实现405 11.4代码解读及运行结果展示418 11.5综合实践小结423 附录424