C语言程序设计精髓
C语言程序设计精髓
1万+ 人选课
更新日期:2025/06/18
开课平台学堂在线
开课高校哈尔滨工业大学
开课教师苏小红赵玲玲叶麟
学科专业工学计算机类
开课时间2025/01/15 - 2025/07/22
课程周期27 周
开课状态开课中
每周学时-
课程简介

我们会用15周的时间来深入讲解C语言,在授课过程中,我们会注重多解释一些“为什么”以及错误程序的分析,从环环相扣的问题入手,将一些易被忽视且对高水平程序设计很重要的“点”,沿着数据结构从简单到复杂的主线逐一展开,在实例的“不断深化和提升”中引出知识点,通过对问题的举一反三和前后知识点的融会贯通,由浅入深地引导你循序渐进地编写规模逐步增大的程序。

在过去30年90%的时间里,C语言独领风骚,仅偶尔被 Java 超越,可见其魅力。C语言作为一种高级语言,其实并不高级,但正是这种“低级”给我们更多思考的机会。期望通过本课程的学习,你不只是简单地能够掌握一种语言的语法,还能理解隐含在语法背后的思想,并初步具备灵活使用这些思想进行编写程序解决实际问题的能力。如果你掌握了这些,你会发现,迈向成功的最后一步不过是选择一种合适的编程工具而已。


课程大纲
学习本课前你必须知道的那些事儿
第一章 初识C语言从认识变量和常量开始
第一节:为什么要学C语言
第二节:如何定义一个变量
第三节:变量的表数范围和存储形式
第四节:宏变量与const变量
第二章 数字间的那些事儿,做点计算哈
第一节:算术运算
第二节:赋值运算
第三节:增1和减1运算
第四节:自动类型转换
第五节:强制类型转换
第三章 从键盘中来,到键盘中,开始输入和输出啦
第一节:数据的格式化屏幕输出
第二节:数据的格式化键盘输出
第三节:单个字符的输入输出
第四节:进阶:用getchar()输入数据存在的问题(含错误案例分析)
第五节:用%c输入数据存在的问题(含错误案例分析)
第四章 无处不在的抉择
第一节:关系运算符和逻辑运算符
第二节:条件语句
第三节:开关语句——条条道路通罗马
第四节:进阶:数值溢出和精度损失问题
第五节:进阶:软件测试与错误实例分析
第五章 周而复始的循环之道
第一节:计数控制的循环
第二节:递推
第三节:条件控制的循环
第四节:嵌套循环
第五节:穷举
第六节:进阶:软件调试与错误实例分析
第六章 函数:分工与合作的艺术
第一节:函数定义、调用、参数传递和函数原型
第二节:函数封装与程序的健壮性
第三节:进阶:断言与防御式编程
第四节:进阶:代码风格
第七章 《盗梦空间》的逻辑:探寻递归的奥秘
第一节:从嵌套调用到递归调用
第二节:递归是如何执行的
第三节:进阶:尾递归是什么鬼?
第四节:变量的作用域
第五节:进阶:变量的生存期
第六节:进阶: 多文件结构
第八章 一堆数据来了,你准备好了吗?
第一节:数组的定义和初始化
第二节:向函数传递一堆相同类型的数据
第三节:查找算法——众里寻他千百度
第四节:排序算法——让世界变得更有序
第九章 指针:C语言世界中所向披靡的“金箍棒”
第一节:指针变量的定义、初始化及其解引用
第二节:指针变量作函数参数
第三节:进阶:函数指针及其应用
第四节:进阶:数组的趣味应用
第十章 字符串:C语言世界中的大力水手
第一节:字符串的存储与表示
第二节:字符串处理操作
第三节:向函数传递和从函数返回字符串
第四节:进阶:缓冲区溢出与缓冲区溢出攻击
第十一章 指针的孪生兄弟
第一节:指针的运算
第二节:指针和一维数组间的关系
第三节:指针和二维数组间的关系
第四节:进阶:指针数组及其应用
第十二章 海陆空齐上阵:又来了一堆数据
第一节:结构体类型
第二节:结构体与数组的嵌套
第三节:结构体的相关计算和操作
第四节:向函数传递一堆不同类型的数据
第五节:枚举类型和共用体类型有什么用
第六节:进阶:典型应用实例——洗发牌模拟
第十三章 原来内存也可以这么玩,我是指针我怕谁
第一节:何为动态内存分配
第二节:动态数组
第三节:进阶:常见的内存错误及其解决对策
第十四章 结构设计的艺术
第一节:数据的链式存储——单向链表
第二节:进阶内容:其他数据结构简介
第十五章 学会保存你的数据
第一节:二进制文件与文本文件
第二节:文件的打开和关闭
第三节:格式化数据的文件读写
第四节:字符和字符串的文件读写
第五节:内存数据块的文件读写
第六节:随机读写与文件缓冲
期末考试