展开全部

主编推荐语

C语言零基础者学习必备参考!包含一系列C语言必备知识点。

内容简介

本书是学习C语言的入门书籍,内容非常全面,包含C语言基础知识、流程控制、数组、函数、指针、字符串、结构体、链表、文件操作、栈和队列、自定义头文件、多文件编译、Linux下C文件的编译和链接、链接库等知识点。

本书并不单纯讲解理论,还配有大量的程序,每个知识点都结合程序解讲。这样读者理解起来更加容易,也能够在遇到实际问题时进行编程。本书主要针对学习C语言的初学者,即使完全没有编程基础,也能够通过阅读本书快速掌握C语言的核心知识。

目录

  • 版权信息
  • 前言
  • 第1章 为什么要学习C语言
  • 1.1 C的起源和发展
  • 1.1.1 计算机语言发展的三个阶段
  • 1.1.2 语言运行速度的比较
  • 1.1.3 C语言的演变过程
  • 1.2 C的特点
  • 1.2.1 C语言的优点
  • 1.2.2 C语言的缺点
  • 1.3 C的应用领域
  • 1.4 C的重要性
  • 1.5 本章总结
  • 第2章 怎样学习C语言
  • 2.1 学习C语言的心得
  • 2.2 学习C语言的目标
  • 2.3 常见问题答疑
  • 2.3.1 学习Java之前为什么建议先学C语言
  • 2.3.2 没学过计算机专业课程能够学懂C语言吗
  • 2.3.3 英语和数学不好能学好C语言吗
  • 2.4 本章总结
  • 第3章 Microsoft Visual C++6.0的使用
  • 3.1 为什么要学习VC++6.0
  • 3.2 如何创建编程文件
  • 3.3 编写一个最简单的程序
  • 3.4 要养成时刻保存的习惯
  • 3.5 编译–链接–执行
  • 3.6 怎样运行第二个程序
  • 3.7 编译–链接–执行时保存路径下的文件夹有什么变化
  • 3.8 如何编写多文件程序
  • 3.9 如何用VC++6.0调试程序
  • 3.10 本章总结
  • 第4章 从一个程序走进C语言
  • 第5章 预备知识
  • 5.1 CPU、内存、硬盘、显卡、主板、显示器之间的关系
  • 5.1.1 电影是如何运行的
  • 5.1.2 CPU为什么不能直接操作硬盘却能直接操作内存
  • 5.1.3 内存的速度为什么比硬盘的速度快
  • 5.1.4 为什么不将内存造得跟硬盘一样大
  • 5.1.5 CPU是如何操作内存的
  • 5.1.6 主板的作用
  • 5.2 HelloWorld程序是如何运行起来的
  • 5.3 字节
  • 5.3.1 什么是字节
  • 5.3.2 字节换算
  • 5.3.3 小结
  • 5.4 进制
  • 5.4.1 什么是进制
  • 5.4.2 进制转换口算法
  • 5.4.3 进制转换公式法
  • 5.4.4 人类为什么最习惯用十进制
  • 5.4.5 计算机为什么用的是二进制
  • 5.4.6 小结
  • 5.5 数据类型
  • 5.5.1 数据类型的分类
  • 5.5.2 基本数据类型及其所占的字节数
  • 5.6 常量
  • 5.6.1 整型常量
  • 5.6.2 浮点型常量
  • 5.6.3 字符型常量
  • 5.7 常量是以什么样的二进制代码存储在计算机中的
  • 5.8 补码
  • 5.8.1 原码和反码
  • 5.8.2 补码的两个核心问题
  • 5.8.3 int型变量所能存储的范围
  • 5.8.4 int型和char型变量是如何相互赋值的
  • 5.9 什么是ASCII
  • 5.10 变量
  • 5.10.1 如何定义变量
  • 5.10.2 变量的本质
  • 5.10.3 为什么要使用变量
  • 5.10.4 变量的命名规则
  • 5.10.5 为什么必须要初始化变量
  • 5.10.6 小结
  • 5.11 各类型数据之间的混合运算
  • 5.12 代码规范化
  • 5.12.1 代码如何写才能规范
  • 5.12.2 代码规范化的好处
  • 5.12.3 代码规范化的七大原则
  • 5.12.4 小结
  • 5.13 本章总结
  • 第6章 printf的用法
  • 6.1 printf的格式
  • 6.2 输出控制符
  • 6.3 %x、%X、%#x、%#X的区别
  • 6.4 如何输出“%d”、“\”和双引号
  • 6.5 本章总结
  • 第7章 scanf的用法
  • 7.1 概述
  • 7.2 使用scanf的注意事项
  • 7.2.1 参数的个数一定要对应
  • 7.2.2 输入的数据类型一定要与所需要的数据类型一致
  • 7.2.3 在使用scanf之前使用printf提示输入
  • 7.3 本章总结
  • 第8章 运算符和表达式
  • 8.1 算术运算符
  • 8.2 关系运算符
  • 8.3 逻辑运算符
  • 8.4 赋值运算符
  • 8.5 运算符的优先级
  • 8.6 本章总结
  • 第9章 选择结构程序设计
  • 9.1 流程控制
  • 9.1.1 什么是流程控制
  • 9.1.2 流程控制的分类
  • 9.2 选择执行的定义和分类
  • 9.3 if语句
  • 9.3.1 if的最简单用法
  • 9.3.2 if的控制范围问题
  • 9.3.3 if…else的用法
  • 9.3.4 if…else if…else的用法
  • 9.3.5 练习——求分数的等级
  • 9.3.6 练习——三个整数从小到大排序
  • 9.3.7 if的常见问题解析
  • 9.4 switch语句
  • 9.5 本章总结
  • 第10章 循环控制
  • 10.1 循环执行的定义和分类
  • 10.2 for循环
  • 10.2.1 for语句的格式
  • 10.2.2 自增和自减
  • 10.2.3 for循环编程练习
  • 10.2.4 for和if的嵌套使用
  • 10.2.5 强制类型转换
  • 10.2.6 浮点数的存储所带来的问题
  • 10.2.7 for循环的嵌套使用
  • 10.2.8 for循环嵌套编程练习
  • 10.3 while循环
  • 10.3.1 while的执行顺序
  • 10.3.2 while和for的比较
  • 10.3.3 如何看懂一个程序——“试数”
  • 10.3.4 do…while
  • 10.3.5 break和continue
  • 10.4 清空输入缓冲区
  • 10.4.1 输入缓冲区
  • 10.4.2 %d和%c读取缓冲区的差别
  • 10.4.3 用scanf吸收回车
  • 10.4.4 getchar()
  • 10.4.5 fflush(stdin)
  • 10.5 本章总结
  • 第11章 数组
  • 11.1 一维数组的使用
  • 11.1.1 一维数组的定义
  • 11.1.2 一维数组的初始化
  • 11.1.3 一维数组元素的引用
  • 11.1.4 如何将数组a赋给数组b
  • 11.1.5 如何编程获取数组的长度
  • 11.1.6 练习
  • 11.1.7 宏定义:#define
  • 11.1.8 小结
  • 11.2 数组倒置算法
  • 11.3 数组查找算法
  • 11.3.1 顺序查找
  • 11.3.2 折半查找
  • 11.4 数组插入、删除算法
  • 11.4.1 插入算法
  • 11.4.2 删除算法
  • 11.5 数组排序算法
  • 11.5.1 冒泡排序
  • 11.5.2 插入排序
  • 11.5.3 选择排序
  • 11.5.4 快速排序
  • 11.5.5 四种排序算法的比较
  • 11.6 二维数组的使用
  • 11.6.1 二维数组的定义
  • 11.6.2 二维数组的初始化
  • 11.6.3 二维数组如何输出
  • 11.6.4 练习——杨辉三角
  • 11.6.5 是否存在多维数组
  • 11.7 本章总结
  • 第12章 函数
  • 12.1 概述
  • 12.1.1 什么是函数
  • 12.1.2 C程序的组成和编译单位
  • 12.1.3 库函数和自定义函数
  • 12.1.4 函数的调用
  • 12.2 为什么需要函数
  • 12.3 有参函数
  • 12.3.1 有参函数定义的一般形式
  • 12.3.2 形参和实参
  • 12.3.3 主调函数中对被调函数的声明
  • 12.3.4 定义函数时应指定返回值类型
  • 12.3.5 函数的返回值
  • 12.3.6 return是如何将值返回给主调函数的
  • 12.3.7 函数的命名规则
  • 12.3.8 练习——判断一个自然数是否是素数
  • 12.4 函数的递归调用
  • 12.4.1 什么是递归
  • 12.4.2 使用递归必须要满足的两个条件
  • 12.4.3 如何学习递归
  • 12.4.4 递归和循环的关系
  • 12.4.5 递归的优缺点
  • 12.4.6 练习——用递归求n的阶乘
  • 12.4.7 练习——用递归实现1+2+3+…+100的和
  • 12.4.8 练习——用递归求斐波那契数列
  • 12.4.9 练习——用递归求两个数的最大公约数
  • 12.4.10 小结
  • 12.5 数组名作为函数参数
  • 12.6 变量的作用域和存储方式
  • 12.6.1 局部变量
  • 12.6.2 全局变量
  • 12.6.3 为什么不建议使用全局变量
  • 12.6.4 自动变量(auto)
  • 12.6.5 静态变量(static)
  • 12.6.6 寄存器变量(register)
  • 12.6.7 外部变量(extern)
  • 12.7 本章总结
  • 第13章 指针
  • 13.1 指针的重要性
  • 13.2 地址和指针的概念
  • 13.3 指针和指针变量
  • 13.3.1 指针变量的定义
  • 13.3.2 指针变量的初始化
  • 13.3.3 指针常见错误
  • 13.4 指针作为函数参数
  • 13.4.1 互换两个数
  • 13.4.2 函数参数传指针和传数据的区别
  • 13.4.3 定义只读变量:const
  • 13.4.4 用const修饰指针变量时的三种效果
  • 13.5 指针和一维数组的关系
  • 13.5.1 用指针引用数组元素
  • 13.5.2 指针的移动
  • 13.5.3 指针变量的自增运算
  • 13.5.4 两个参数确定一个数组
  • 13.5.5 指针变量占多少字节
  • 13.6 函数、数组、指针相结合的程序练习
  • 13.7 动态内存分配
  • 13.7.1 传统数组的缺点
  • 13.7.2 malloc函数的使用(一)
  • 13.7.3 malloc函数的使用(二)
  • 13.7.4 free函数的使用
  • 13.7.5 练习——动态数组的构建
  • 13.7.6 动态数组长度的扩充和缩小
  • 13.7.7 静态内存分配和动态内存分配小结
  • 13.7.8 多级指针
  • 13.7.9 跨函数使用动态内存
  • 13.8 通过指针引用二维数组
  • 13.8.1 二维数组元素的地址
  • 13.8.2 二维数组的首地址和数组名
  • 13.8.3 练习
  • 13.9 函数指针
  • 13.9.1 什么是函数指针
  • 13.9.2 如何用函数指针调用函数
  • 13.10 本章总结
  • 第14章 字符串
  • 14.1 字符串常量
  • 14.2 不能将一个字符串常量赋给一个字符变量
  • 14.3 字符数组
  • 14.3.1 字符数组的定义
  • 14.3.2 字符数组的初始化
  • 14.3.3 初始化内存函数:memset()
  • 14.3.4 用scanf输入字符串
  • 14.4 字符串与指针
  • 14.5 如何用scanf给字符指针变量所指向的内存单元初始化
  • 14.6 字符串处理函数
  • 14.6.1 字符串输入函数gets()
  • 14.6.2 优先使用fgets()函数
  • 14.6.3 使用gets()和fgets()前注意吸收回车
  • 14.6.4 练习——判断字符串是否是回文字符串
  • 14.6.5 练习——将字符串中的小写字母转换成大写字母
  • 14.6.6 字符串输出函数puts()
  • 14.6.7 字符串输出函数fputs()
  • 14.6.8 字符串复制函数strcpy()
  • 14.6.9 字符串复制函数strncpy()
  • 14.6.10 内存拷贝函数memcpy()
  • 14.6.11 sprintf()
  • 14.6.12 字符串比较函数strcmp()
  • 14.7 本章总结
  • 第15章 自定义数据类型——结构体
  • 15.1 为什么需要结构体
  • 15.2 定义和使用结构体变量
  • 15.2.1 声明结构体类型
  • 15.2.2 定义结构体类型变量
  • 15.2.3 结构体变量可进行哪些运算
  • 15.2.4 结构体变量的初始化——定义时初始化
  • 15.2.5 结构体变量的引用
  • 15.2.6 结构体变量的初始化——先定义后初始化
  • 15.2.7 结构体字节对齐
  • 15.3 结构体数组
  • 15.3.1 结构体数组的定义和引用
  • 15.3.2 结构体数组定义时初始化
  • 15.4 结构体指针
  • 15.4.1 指向结构体变量的指针
  • 15.4.2 指向结构体数组的指针
  • 15.5 结构体变量和结构体指针变量作为函数参数
  • 15.6 练习——动态构造存放学生信息的结构体数组
  • 15.7 本章总结
  • 第16章 链表
  • 16.1 为什么要学习链表
  • 16.1.1 数组的缺陷
  • 16.1.2 链表的优点
  • 16.2 链表的缺点
  • 16.3 链表相关术语
  • 16.4 链表的定义和分类
  • 16.4.1 链表的定义
  • 16.4.2 链表的分类
  • 16.5 编写一个链表程序
  • 16.6 练习——插入结点
  • 16.7 练习——删除结点
  • 16.8 练习——销毁链表
  • 16.9 链表排序算法
  • 16.9.1 如何互换结点
  • 16.9.2 链表冒泡排序
  • 16.9.3 链表插入排序
  • 16.9.4 链表选择排序
  • 16.9.5 链表快速排序
  • 16.9.6 链表排序小结
  • 16.10 单循环链表
  • 16.11 双向链表
  • 16.12 typedef的用法
  • 16.13 本章总结
  • 第17章 栈
  • 17.1 内存的分区
  • 17.2 线性表
  • 17.3 栈的定义
  • 17.4 栈的基本操作
  • 17.5 链栈程序演示
  • 17.6 栈的应用
  • 17.7 本章总结
  • 第18章 队列
  • 18.1 队列的定义
  • 18.2 顺序队列
  • 18.3 链式队列的基本操作
  • 18.4 链式队列程序演示
  • 18.5 队列的应用
  • 18.6 本章总结
  • 第19章 文件操作
  • 19.1 文件概述
  • 19.1.1 文件的定义
  • 19.1.2 文件的分类
  • 19.2 文件类型指针变量
  • 19.3 文件的打开
  • 19.3.1 打开文件
  • 19.3.2 文件的使用方式
  • 19.3.3 练习——打开文件
  • 19.4 文件的关闭
  • 19.5 文件读写函数概述
  • 19.6 fgetc()和fputc()
  • 19.6.1 fputc()
  • 19.6.2 fgetc()
  • 19.6.3 fgetc()程序举例
  • 19.6.4 fgetc()和fputc()结合程序举例
  • 19.6.5 如何判断文件是否为空
  • 19.7 fgets()和fputs()
  • 19.7.1 fgets()
  • 19.7.2 fputs()
  • 19.8 移动文件位置指针:fseek()和rewind()
  • 19.8.1 fseek()
  • 19.8.2 rewind()
  • 19.9 格式化读写函数:fprintf()和fscanf()
  • 19.10 数据块读写函数:fread()和fwrite()
  • 19.10.1 fwrite()函数
  • 19.10.2 fread()函数
  • 19.10.3 ftell()
  • 19.10.4 如何用fread()和fwrite()删除文件中的数据块
  • 19.10.5 练习——登录程序
  • 19.11 本章总结
  • 第20章 头文件
  • 20.1 程序是如何编译生成可执行文件的
  • 20.2 概述
  • 20.2.1 什么是头文件
  • 20.2.2 头文件的作用
  • 20.2.3 什么样的内容适合放在头文件中
  • 20.3 “#include<>”和“#include""”的区别
  • 20.4 如何自定义头文件
  • 20.4.1 头文件的组成部分
  • 20.4.2 #ifndef/#define/#endif
  • 20.5 本章总结
  • 第21章 位操作运算符
  • 21.1 按位与(&)
  • 21.2 按位或(|)
  • 21.3 按位异或(^)
  • 21.4 左移运算符(<<)
  • 21.5 右移运算符(>>)
  • 21.6 本章总结
  • 附录A gcc编译工具的使用
  • 附录B make自动化编译工具的使用
  • 附录C gdb调试工具的使用
  • 附录D 链接库
  • 附录E 运算符的优先级和结合性
  • 常用ASCII码表
展开全部

评分及书评

4.8
12个评分
  • 用户头像
    给这本书评了
    5.0
    尝试与计算机沟通1.00

    缘起:“程序是写出来的,不是看书看出来的!” 要 “敲代码”,必学盲打!盲打是学习编程最基本的技能。要学会记笔记。编程需要不断地积累。我们一定要学会模仿别人优秀的代码、优秀的算法,然后将它记下来。一定要站在巨人的肩膀上学习。但是我们的记忆能力是有限的,时间长了难免会遗忘,所以一定要学会记笔记。一有心得、体会、感悟就写下来,这些都是很珍贵的。我们在记笔记的时候,如果眼前没有计算机则可以先写在纸上,但事后一定要将它整理成电子版。整理成电子版看起来会很方便、舒适,还可以随意地增添和删改,保存时间也长。感受:开始尝试和计算机沟通。

      转发
      评论
      用户头像
      给这本书评了
      5.0
      非常适合计算机二级自学同学

      这本书真的就是字如其名,手把手啊,我的天 (扶额),讲的真的很清楚很细致,每一个问题和细节都讲了。真的很适合我们这些考生 amen,爱得到,爱这本书。抱歉我不接受别人说这本书不好,别跟我评价说哪哪更好,这本书就是绝美,杠我你必 s

        转发
        评论
        用户头像
        给这本书评了
        3.0
        看的第一本 c 书

        简单全面的介绍了 c,适合入门。但是有些语法错误,有些东西没说清楚但可能是中国人写的,更适合中国人阅读,没看完经典 c,就先看这个了。不过对我来说也够了,我主要是为了看计算机系统原理,看完了再回来学 c

          转发
          评论
        • 查看全部4条书评

        出版方

        机械工业出版社有限公司

        机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。