目录
第1章计算机及程序设计概述1
1.1概述1
1.2计算与机器2
1.2.1计算器2
1.2.2机械式计算机2
1.2.3图灵机模型3
1.2.4电子数字计算机4
1.3指令与程序5
1.4计算机的典型应用6
1.5程序设计语言7
1.5.1机器语言8
1.5.2汇编语言8
1.5.3**语言9<p>目录</p> <p>第1章计算机及程序设计概述1</p> <p>1.1概述1</p> <p>1.2计算与机器2</p> <p>1.2.1计算器2</p> <p>1.2.2机械式计算机2</p> <p>1.2.3图灵机模型3</p> <p>1.2.4电子数字计算机4</p> <p>1.3指令与程序5</p> <p>1.4计算机的典型应用6</p> <p>1.5程序设计语言7</p> <p>1.5.1机器语言8</p> <p>1.5.2汇编语言8</p> <p>1.5.3**语言9</p> <p>1.6问题求解与算法11</p> <p>1.6.1算法定义12</p> <p>1.6.2算法复杂性12</p> <p>1.7算法描述13</p> <p>1.7.1伪代码13</p> <p>1.7.2流程图14</p> <p>1.7.3NS图15</p> <p>1.8程序设计15</p> <p>1.8.1基本步骤15</p> <p>1.8.2结构化程序设计16</p> <p>1.8.3面向对象程序设计17</p> <p>1.8.4并行程序设计17</p> <p>1.8.5程序设计思想前沿18</p> <p>1.9C语言简介18</p> <p>1.9.1C语言的特点18</p> <p>1.9.2简单的C程序设计19[1]〖3〗程序设计基础(C语言)(第3版)目录〖3〗[3]1.9.3C语言程序结构21</p> <p>1.9.4C程序设计过程23</p> <p>1.10案例24</p> <p>练习题25</p> <p> </p> <p>第2章信息编码与数据类型27</p> <p>2.1概述27</p> <p>2.2二进制与信息编码27</p> <p>2.2.1整数编码27</p> <p>2.2.2实数编码28</p> <p>2.2.3字符编码29</p> <p>2.3标识符和关键字30</p> <p>2.3.1标识符构成30</p> <p>2.3.2关键字30</p> <p>2.3.3自定义标识符31</p> <p>2.4基本数据类型31</p> <p>2.4.1整数类型33</p> <p>2.4.2实数类型34</p> <p>2.4.3字符类型34</p> <p>2.4.4逻辑类型36</p> <p>2.4.5复数类型36</p> <p>2.5常量37</p> <p>2.5.1整型常量37</p> <p>2.5.2实型常量38</p> <p>2.5.3字符常量38</p> <p>2.5.4字符串常量39</p> <p>2.5.5逻辑常量40</p> <p>2.5.6复数常量40</p> <p>2.5.7符号常量41</p> <p>2.6变量41</p> <p>2.6.1变量声明42</p> <p>2.6.2变量初始化43</p> <p>2.6.3变量赋值44</p> <p>2.6.4变量读写45</p> <p>2.7案例45</p> <p>练习题46</p> <p> </p> <p>第3章基本运算与顺序结构48</p> <p>3.1概述48</p> <p>3.2运算符与表达式48</p> <p>3.3赋值运算50</p> <p>3.4算术运算51</p> <p>3.4.1基本算术运算51</p> <p>3.4.2自增或自减运算52</p> <p>3.4.3整数运算53</p> <p>3.4.4实数运算55</p> <p>3.4.5复合赋值运算56</p> <p>3.5字符运算56</p> <p>3.5.1算术运算56</p> <p>3.5.2字符分类57</p> <p>3.5.3字符转换58</p> <p>3.6位运算58</p> <p>3.6.1位逻辑运算58</p> <p>3.6.2位移运算60</p> <p>3.6.3复合位运算及补位原则61</p> <p>3.7逗号运算61</p> <p>3.8强制类型转换62</p> <p>3.8.1算术运算中的隐式转换62</p> <p>3.8.2赋值运算中的隐式转换62</p> <p>3.8.3显式转换63</p> <p>3.9sizeof运算64</p> <p>3.10标准设备输入输出库64</p> <p>3.10.1字符输入输出函数65</p> <p>3.10.2格式化输出函数66</p> <p>3.10.3格式化输入函数72</p> <p>3.11数学库76</p> <p>3.11.1实数计算函数76</p> <p>3.11.2复数运算函数77</p> <p>3.12基本语句78</p> <p>3.12.1标签语句78</p> <p>3.12.2空语句78</p> <p>3.12.3声明语句79</p> <p>3.12.4表达式语句79</p> <p>3.12.5复合语句79</p> <p>3.13顺序结构80</p> <p>3.14案例82</p> <p>练习题83</p> <p> </p> <p>第4章逻辑判断与选择结构85</p> <p>4.1概述85</p> <p>4.2关系运算85</p> <p>4.3逻辑运算86</p> <p>4.4条件运算88</p> <p>4.5if语句89</p> <p>4.5.1单分支选择结构89</p> <p>4.5.2双分支选择结构91</p> <p>4.5.3多分支选择结构93</p> <p>4.6switch语句96</p> <p>4.7选择结构嵌套101</p> <p>4.8案例106</p> <p>练习题108</p> <p> </p> <p>第5章迭代计算与循环结构109</p> <p>5.1概述109</p> <p>5.2while语句110</p> <p>5.3do…while语句112</p> <p>5.4for语句115</p> <p>5.5循环语句对比118</p> <p>5.6循环嵌套119</p> <p>5.7跳转控制语句124</p> <p>5.7.1break语句124</p> <p>5.7.2continue语句126</p> <p>5.7.3goto语句126</p> <p>5.7.4continue、break、goto语句的区别128</p> <p>5.8案例129</p> <p>练习题131</p> <p> </p> <p>第6章集合数据与数组133</p> <p>6.1概述133</p> <p>6.2一维数组134</p> <p>6.2.1一维数组定义134</p> <p>6.2.2一维数组初始化135</p> <p>6.2.3一维数组引用136</p> <p>6.2.4一维数组应用137</p> <p>6.3二维数组140</p> <p>6.3.1二维数组定义141</p> <p>6.3.2二维数组初始化142</p> <p>6.3.3二维数组引用143</p> <p>6.3.4二维数组应用143</p> <p>6.4高维数组147</p> <p>6.5字符数组与字符串149</p> <p>6.5.1字符数组149</p> <p>6.5.2字符串151</p> <p>6.6字符串处理函数155</p> <p>6.6.1字符串标准输入输出函数155</p> <p>6.6.2字符串输入输出函数157</p> <p>6.6.3字符串复制函数158</p> <p>6.6.4字符串连接函数159</p> <p>6.6.5字符串比较函数159</p> <p>6.6.6字符串检索函数160</p> <p>6.6.7字符串转换函数162</p> <p>6.6.8其他字符串常用函数162</p> <p>6.6.9宽字节型字符串函数163</p> <p>6.7数组新特性164</p> <p>6.8案例165</p> <p>练习题166</p> <p> </p> <p>第7章模块化与函数168</p> <p>7.1概述168</p> <p>7.2函数定义170</p> <p>7.2.1函数定义形式170</p> <p>7.2.2函数返回值与函数类型173</p> <p>7.3函数声明、头文件的使用和库函数声明176</p> <p>7.3.1函数声明176</p> <p>7.3.2头文件的使用177</p> <p>7.3.3库函数声明178</p> <p>7.4参数传递180</p> <p>7.4.1形式参数180</p> <p>7.4.2实际参数182</p> <p>7.4.3值复制传递机制183</p> <p>7.4.4地址复制传递机制185</p> <p>7.4.5数组参数新特性189</p> <p>7.5函数调用190</p> <p>7.5.1函数调用形式190</p> <p>7.5.2嵌套调用191</p> <p>7.5.3递归调用192</p> <p>7.6源程序文件与函数分类194</p> <p>7.6.1外部函数194</p> <p>7.6.2内部函数195</p> <p>7.6.3内联函数196</p> <p>7.7变量存储类型197</p> <p>7.7.1普通变量197</p> <p>7.7.2寄存器变量197</p> <p>7.8变量作用域198</p> <p>7.8.1局部变量199</p> <p>7.8.2全局变量200</p> <p>7.8.3静态变量203</p> <p>7.8.4变量访问控制204</p> <p>7.9源程序结构205</p> <p>7.9.1单文件单函数结构205</p> <p>7.9.2单文件多函数结构206</p> <p>7.9.3多文件多函数结构206</p> <p>7.10案例208</p> <p>练习题210</p> <p> </p> <p>第8章地址操作与指针212</p> <p>8.1概述212</p> <p>8.2指针和指针变量213</p> <p>8.2.1指针变量声明213</p> <p>8.2.2指针变量的赋值及初始化214</p> <p>8.2.3指针变量的引用214</p> <p>8.3指针运算215</p> <p>8.3.1取地址与取值运算216</p> <p>8.3.2算术运算216</p> <p>8.3.3关系运算218</p> <p>8.3.4指针类型转换218</p> <p>8.4数组和指针220</p> <p>8.4.1用指针访问数组元素220</p> <p>8.4.2指向多维数组的指针221</p> <p>8.5字符串和指针224</p> <p>8.5.1指针处理字符串224</p> <p>8.5.2使用字符指针变量与字符数组的区别225</p> <p>8.6函数和指针227</p> <p>8.6.1指针作为函数参数227</p> <p>8.6.2指针作为函数的返回值232</p> <p>8.6.3指向函数的指针233</p> <p>8.7指针数组236</p> <p>8.7.1指针数组定义236</p> <p>8.7.2带参数的main函数239</p> <p>8.8数组指针241</p> <p>8.9指向指针的指针242</p> <p>8.10内存访问控制244</p> <p>8.11案例245</p> <p>练习题249</p> <p> </p> <p>第9章复杂数据类型与结构体251</p> <p>9.1概述251</p> <p>9.2结构体类型252</p> <p>9.2.1结构体类型定义253</p> <p>9.2.2结构体类型变量声明与初始化254</p> <p>9.2.3结构体变量的引用257</p> <p>9.2.4结构体数组259</p> <p>9.2.5结构体与函数262</p> <p>9.2.6结构体类型指针264</p> <p>9.3共用体267</p> <p>9.4枚举类型269</p> <p>9.5类型重定义271</p> <p>9.6日期和时间273</p> <p>9.7链表274</p> <p>9.7.1链表定义274</p> <p>9.7.2动态内存管理函数275</p> <p>9.7.3链表的基本操作279</p> <p>9.8结构体新特性283</p> <p>9.9案例285</p> <p>练习题290</p> <p> </p> <p>第10章泛化编程与预编译292</p> <p>10.1概述292</p> <p>10.2#define指令292</p> <p>10.2.1不带参数的宏定义292</p> <p>10.2.2带参数的宏定义294</p> <p>10.3#include指令297</p> <p>10.4条件编译299</p> <p>10.4.1#ifdef … #else …#endif299</p> <p>10.4.2#ifndef … #else …#endif299</p> <p>10.4.3#if … #else …#endif300</p> <p>10.5其他指令302</p> <p>10.6预定义宏305</p> <p>10.7异常处理305</p> <p>10.8程序移植307</p> <p>10.9案例308</p> <p>练习题310</p> <p> </p> <p>第11章数据存储与文件312</p> <p>11.1概述312</p> <p>11.2文本文件与二进制文件313</p> <p>11.2.1文本文件313</p> <p>11.2.2二进制文件313</p> <p>11.3文件类型314</p> <p>11.4文件打开与关闭315</p> <p>11.4.1文件打开315</p> <p>11.4.2文件关闭318</p> <p>11.5文件读写319</p> <p>11.5.1单字符读写319</p> <p>11.5.2字符串读写322</p> <p>11.5.3格式化读写323</p> <p>11.5.4数据块读写325</p> <p>11.6文件定位函数328</p> <p>11.7文件状态跟踪330</p> <p>11.8其他文件操作函数332</p> <p>11.9案例334</p> <p>练习题338</p> <p> </p> <p>第12章程序设计思想及范例 340</p> <p>12.1概述340</p> <p>12.2求和/求积问题340</p> <p>12.2.1多项式求和341</p> <p>12.2.2数列求和342</p> <p>12.3遍历问题344</p> <p>12.4迭代问题350</p> <p>12.4.1二分迭代法350</p> <p>12.4.2牛顿迭代法352</p> <p>12.5排序问题354</p> <p>12.5.1直接插入排序355</p> <p>12.5.2起泡排序357</p> <p>12.5.3选择排序359</p> <p>12.6查找问题361</p> <p>12.6.1顺序查找361</p> <p>12.6.2折半查找362</p> <p>12.7递归问题364</p> <p>12.8矩阵运算367</p> <p>12.8.1矩阵加/减运算367</p> <p>12.8.2矩阵乘法368</p> <p>12.8.3矩阵转置370</p> <p>练习题371</p> <p> </p> <p>第13章面向对象与C 基础373</p> <p>13.1概述373</p> <p>13.1.1结构化程序设计373</p> <p>13.1.2模块封装与访问控制374</p> <p>13.2面向对象程序设计376</p> <p>13.3类与对象376</p> <p>13.3.1类376</p> <p>13.3.2对象378</p> <p>13.3.3类在C 中的实现378</p> <p>13.3.4成员变量384</p> <p>13.3.5成员函数386</p> <p>13.3.6构造函数和析构函数390</p> <p>13.3.7函数重载392</p> <p>13.3.8运算符重载394</p> <p>13.3.9静态成员变量396</p> <p>13.3.10静态成员函数398</p> <p>13.4继承与多态400</p> <p>13.4.1类继承400</p> <p>13.4.2多态性与虚函数403</p> <p>13.5案例407</p> <p>练习题408</p> <p> </p> <p>第14章高性能计算与并行程序设计409</p> <p>14.1概述409</p> <p>14.2并行算法409</p> <p>14.2.1并行问题409</p> <p>14.2.2并行算法设计410</p> <p>14.3并行程序设计实现411</p> <p>14.3.1并行程序设计模型411</p> <p>14.3.2进程412</p> <p>14.3.3创建进程412</p> <p>14.3.4消息传递413</p> <p>14.4MPI程序设计基础416</p> <p>14.4.1MPI简介416</p> <p>14.4.2简单MPI程序设计417</p> <p>14.4.3MPI初始化与关闭417</p> <p>14.4.4MPI函数库419</p> <p>14.4.5MPI消息传递420</p> <p>14.5多核CPU与多线程428</p> <p>14.5.1多核CPU428</p> <p>14.5.2线程430</p> <p>14.6OpenMP与多核程序设计431</p> <p>14.6.1OpenMP简介431</p> <p>14.6.2OpenMP并行程序结构431</p> <p>14.6.3parallel节433</p> <p>14.6.4for节434</p> <p>14.6.5其他节435</p> <p>14.6.6共享变量与信息传递436</p> <p>14.7多线程技术437</p> <p>14.7.1线程函数库简介437</p> <p>14.7.2Win32线程函数库437</p> <p>14.7.3C11标准线程函数库444</p> <p>练习题451</p> <p> </p> <p>第15章个体软件过程管理453</p> <p>15.1概述453</p> <p>15.2编码规范定义454</p> <p>15.3MPI编码规范454</p> <p>15.3.1标识符命名规范455</p> <p>15.3.2函数或过程规范455</p> <p>15.4ANSI C程序编码规范456</p> <p>15.4.1代码结构与组织456</p> <p>15.4.2注释458</p> <p>15.4.3标识符命名规范460</p> <p>15.4.4代码风格与排版461</p> <p>15.5代码重用技术462</p> <p>15.5.1源程序文件463</p> <p>15.5.2静态库463</p> <p>15.5.3动态链接库465</p> <p>15.5.4组件技术467</p> <p>15.6软件生命周期模型简介468</p> <p>15.7CMM简介470</p> <p>15.8PSP简介470</p> <p>15.9PSP0级471</p> <p>15.9.1计划过程管理472</p> <p>15.9.2开发过程管理472</p> <p>15.9.3总结过程管理473</p> <p>15.9.4PSP0过程管理文档474</p> <p>15.9.5PSP0.1级475</p> <p>15.10软件开发计划477</p> <p>15.10.1软件开发计划基本内容477</p> <p>15.10.2制定个体软件开发计划478</p> <p>15.10.3PSP软件开发计划过程管理479</p> <p>15.11PSP1级479</p> <p>15.11.1规模计算480</p> <p>15.11.2任务计划480</p> <p>15.11.3进度计划481</p> <p>15.12PSP2级481</p> <p>15.12.1代码评审482</p> <p>15.12.2设计评审483</p> <p>15.12.3缺陷预防483</p> <p>15.12.4PSP2级的改进483</p> <p>练习题483</p> <p> </p> <p>附录AASCII码表485</p> <p> </p> <p>附录B运算符和结合方向486</p> <p> </p> <p>参考文献488</p>显示全部信息前 言第3版前言
近年来,以云计算、大数据、深度学习为代表的计算机技术快速发展,“互联网 ”成为传统工业改革的重要方向,强大的社会需求对高等教育人才的计算机能力培养提出了新的要求。“程序设计基础”是计算机能力培养的核心课程,承担着计算思维与程序设计能力培养的重要责任。
计算思维的表达和程序设计均离不开程序设计语言。本教材选择了C语言。1972年,为编写UNIX操作系统,贝尔实验室Dennis Ritchie和Ken Thompson设计了C语言,并于1978年发布C语言的**个版本,史称K R版本。伴随着小型机和PC的快速发展,MacOS、Windows、Linux等操作系统及其应用软件的开发大量使用了C语言。随着C 、Java、PHP、Python等多种程序语言的兴起,C语言在应用软件开发中的比例有所下降。但是,根据 IEEE Spectrum发布的报告,C语言在*近3年内依然是*受欢迎的两种程序设计语言之一。随着多核计算和GPU计算等并行计算的兴起,大多数并行计算框架依然选择了C语言。因此,在本科阶段的程序设计基础课程中,C语言是一个*佳的选择。<p>第3版前言</p> <p> 近年来,以云计算、大数据、深度学习为代表的计算机技术快速发展,“互联网 ”成为传统工业改革的重要方向,强大的社会需求对高等教育人才的计算机能力培养提出了新的要求。“程序设计基础”是计算机能力培养的核心课程,承担着计算思维与程序设计能力培养的重要责任。</p> <p>计算思维的表达和程序设计均离不开程序设计语言。本教材选择了C语言。1972年,为编写UNIX操作系统,贝尔实验室Dennis Ritchie和Ken Thompson设计了C语言,并于1978年发布C语言的**个版本,史称K&R版本。伴随着小型机和PC的快速发展,MacOS、Windows、Linux等操作系统及其应用软件的开发大量使用了C语言。随着C 、Java、PHP、Python等多种程序语言的兴起,C语言在应用软件开发中的比例有所下降。但是,根据 IEEE Spectrum发布的报��,C语言在*近3年内依然是*受欢迎的两种程序设计语言之一。随着多核计算和GPU计算等并行计算的兴起,大多数并行计算框架依然选择了C语言。因此,在本科阶段的程序设计基础课程中,C语言是一个*佳的选择。</p> <p>本次修订在前两版的基础上对内容进行了大幅度的调整。结合作者多年的教学和软件开发经验,本教材**介绍程序设计的基本方法和技术,以程序设计思想、程序设计语言、程序设计技术和软件工程管理4条主线组织相关内容。在程序设计思想方面,以结构化程序设计思想为主,同时介绍面向对象程序设计思想,并引入并行程序设计的思想。在程序设计语言方面,以C语言为主,按照*新C11标准,充分考虑初学者的学习规律,深入浅出地介绍基本语法和特性,内容通俗易懂。在程序设计技术方面,**介绍结构化程序设计,同时从代码封装与重用入手,介绍函数库和组件;同时加强并行计算技术的内容,除介绍面向多机的MPI外,还介绍了面向多核的多线程和OpenMP技术。为培养个人软件工程的能力,从程序设计的规范性入手介绍个体软件过程管理。</p> <p>本教材共分15章。第1章按照计算设备的发展过程,介绍图灵机及现代计算机的工作原理、问题求解与算法以及主流的程序设计思想和程序设计语言。第2章从信息编码与存储着手,介绍基本标识符、数据类型、常量和变量。第3章从数值计算角度出发,介绍运算符、表达式、输入输出函数库、数值计算函数库以及基本程序设计语句。第4章**介绍逻辑运算与选择结构及其实现。第5章介绍迭代逻辑与循环结构及其实现。第6章从集合数据处理角度介绍数组、字符串及其实现。第7章从分工和重用角度介绍函数以及基于多文件的程序结构。第8章从地址角度介绍如何通过指针处理数据和指令。第9章围绕复杂数据结构的表示形式,介绍结构体、共用体和线性链表。第10章介绍预编译处理及其程序移植和泛化编程。第11章从数据**存储角度介绍文件和常用函数。第12章汇总了常见问题的求解算法。第13章从代码和数据封装的角度介绍面向对象的程序设计思想。第14章从高性能计算角度介绍并行程序设计的基本思想以及MPI、OpenMP和多线程技术。第15章从培养合格程序设计人员的角度介绍程序设计规范和代码重用技术,并引入软件工程的概念,初步介绍个体软件过程(PSP)。</p> <p>本教材由高克宁教授主编,副主编有李金双、赵长宽、柳秀梅和徐彬。其中第1章由高克宁编写,第2~5章由李金双编写,第7、12、14、15章由赵长宽编写,第6、9、11章由柳秀梅编写,第8、10、13章由徐彬编写。高克宁、赵长宽负责全书的统稿。同时,感谢为本教材出版付出辛苦的各位同事和研究生。</p> <p>本教材提供全部教学PPT、习题答案、案例,请联系清华大学出版社(www.tup.com.cn)。教材中的部分程序要求采用支持C11标准的编译器,建议使用GCC 4.9.2或更新版本。</p> <p> </p> <p> 作者</p> <p>2017年7月于东北大学[1]〖3〗程序设计基础(C语言)(第3版)前言〖3〗[3]</p>显示全部信息免费在线读