学习程序设计是一件充满挑战、更充满乐趣的事情,然而学习之初,它之所以给你枯燥乏味的感觉,那是因为没有发掘出它的趣味来。本课程力图用最简明的语言、最典型的实例及最通俗的解释将这种趣味性挖掘出来,带给你全新的学习体验,和你一起欣赏C语言之美,领悟C语言之妙,体会学习C语言之无穷乐趣。
开设学校:哈尔滨工业大学;学科:计算机、
学习程序设计是一件充满挑战、更充满乐趣的事情,然而学习之初,它之所以给你枯燥乏味的感觉,那是因为没有发掘出它的趣味来。本课程力图用最简明的语言、最典型的实例及最通俗的解释将这种趣味性挖掘出来,带给你全新的学习体验,和你一起欣赏C语言之美,领悟C语言之妙,体会学习C语言之无穷乐趣。
-开篇
-第一节:为什么要学C语言
-第二节:如何定义一个变量
-第三节:变量的表数范围和存储形式
--变量在内存中所占的字节数
-第四节:宏变量与const变量
--浮点数与定点数
--宏常量与const常量
-第一章测验
-第一节:算术运算
--2.1 算数运算
--运算符的优先级和结合性
--求余运算
-第二节:赋值运算
--在定义变量的时候对变量进行初始化
-第三节:增1和减1运算
-第四节:自动类型转换
--不同类型数据的运算
-第五节:强制类型转换
--强制类型转换
-第二章测试
-第一节:数据的格式化屏幕输出
--格式字符
-第二节:数据的格式化键盘输出
-第三节:单个字符的输入输出
--单个字符的输入输出
-第四节:进阶:用getchar()输入数据存在的问题(含错误案例分析)
-第五节:用%c输入数据存在的问题(含错误案例分析)
--%c格式转换说明
-第三章测验
-第一节:关系运算符和逻辑运算符
--判断ch是英文字母(大写或者小写)
-第二节:条件语句
--条件运算符
-第三节:开关语句——条条道路通罗马
--多分支选择结构
-第四节:进阶:数值溢出和精度损失问题
--赋值中的自动类型转换
--浮点数的表数精度
-第五节:进阶:软件测试与错误实例分析
--4.5程序测试
--程序测试
-第四章测验
-第一节:计数控制的循环
--逗号运算符
-第二节:递推
-第三节:条件控制的循环
--随机数的生成
-第四节:嵌套循环
--5.4 嵌套循环
--嵌套循环
-第五节:穷举
--流程的转移控制
-第六节:进阶:软件调试与错误实例分析
--5.6 程序调试
--程序调试
-第五章测验
-第一节:函数定义、调用、参数传递和函数原型
--函数的参数和返回值
--函数原型
-第二节:函数封装与程序的健壮性
--函数封装与程序的健壮性
-第三节:进阶:断言与防御式编程
--断言
--断言的使用场合
-第四节:进阶:代码风格
--6.4 代码风格
--函数名的命名
-第六章测验
-第一节:从嵌套调用到递归调用
--函数的嵌套调用和递归调用
--递归的数学基础
-第二节:递归是如何执行的
--递归算法的执行过程
-第三节:进阶:尾递归是什么鬼?
--尾递归
-第四节:变量的作用域
--变量的作用域
--全局变量的副作用
-第五节:进阶:变量的生存期
--变量的存储类型与变量的作用域
-第六节:进阶: 多文件结构
-第七章测验
-第一节:数组的定义和初始化
--数组的定义和初始化
--数组的赋值
-第二节:向函数传递一堆相同类型的数据
--数组做函数参数
-第三节:查找算法——众里寻他千百度
--计算最大值
--线性查找与二分查找
--二分查找算法的基本思想
-第四节:排序算法——让世界变得更有序
-第八章测验
-第一节:指针变量的定义、初始化及其解引用
--指针的概念
-第二节:指针变量作函数参数
-第三节:进阶:函数指针及其应用
--函数指针的定义和初始化
-第四节:进阶:数组的趣味应用
--筛法求素数
--随机生成一个各位相异的4位数
-第九章测验
-第一节:字符串的存储与表示
--字符串的表示与存储
-第二节:字符串处理操作
--字符串处理函数
-第三节:向函数传递和从函数返回字符串
--向函数传递字符串
--从函数返回字符串
-第四节:进阶:缓冲区溢出与缓冲区溢出攻击
--打印杨辉三角形
-第十章测验
-第一节:指针的运算
--指针的算术运算
-第二节:指针和一维数组间的关系
--指针和一维数组
-第三节:指针和二维数组间的关系
--元素在二维数组中相对于首地址的偏移量
-第四节:进阶:指针数组及其应用
--11.4.1 指针数组及其应用 - 用指针数组表示多个字符串
--字符指针数组
-第十一章测验
-第一节:结构体类型
--关键字typedef
--结构体变量的定义
-第二节:结构体与数组的嵌套
--结构体的嵌套
--结构体的嵌套
-第三节:结构体的相关计算和操作
--结构体类型所占内存的字节数
--对结构体的操作
-第四节:向函数传递一堆不同类型的数据
--结构体变量的访问
--向函数传递结构体
-第五节:枚举类型和共用体类型有什么用
--枚举类型
--共用体类型
-第六节:进阶:典型应用实例——洗发牌模拟
-第十二章测验
-第一节:何为动态内存分配
-第二节:动态数组
-第三节:进阶:常见的内存错误及其解决对策
--13.3.3 常见的内存错误及其解决对策-3(内存泄露)
--指针和内存
-第十三章测验
-第一节:数据的链式存储——单向链表
-第二节:进阶内容:其他数据结构简介
--14.2.2 树
--14.2.3 图
-第十四章作业
-第一节:二进制文件与文本文件
-第二节:文件的打开和关闭
-第三节:格式化数据的文件读写
-第四节:字符和字符串的文件读写
--15.4.2 fgetc(),fputc(),feof()的程序实例
--15.4.3 feof()函数在应用中存在的问题原因分析
--函数fgetc()和feof()
--fgets()与fputs()
-第五节:内存数据块的文件读写
-第六节:随机读写与文件缓冲
-第十五章测验
-期末考试
苏小红,博士,教授,博士生导师,哈尔滨工业大学计算机科学与技术学院国家级实验教学示范中心副主任,航天软件工程研究中心和计算机语言基础教研室主任,校教学带头人,校级教学名师。国家精品开放课程“C语言程序设计”和省精品课程“计算机图形学”的负责人,在中国大学MOOC平台开设“程序设计基础”和“C语言程序设计精髓”两门MOOC课程,累计选课人数超过26万。校内主讲本科生课程“C语言程序设计”、研究生课程“计算机图形学”以及本科生创新研修课“自然景物模拟与分形艺术”。研究方向为:程序分析,软件错误定位,软件缺陷预测,克隆代码分析,无人机航迹规划,目标检测与跟踪等。主持完成国家自然科学基金、国防基础科研等项目多项,发表论文100余篇,已授权发明专利5项,获得软件著作权登记7项,主持研制开发的C语言编程题考试自动评分系统被国内众多院校使用,获黑龙江省科技进步二等奖1项,黑龙江省自然科学二等奖1项,哈尔滨市自然科学技术学术成果一等奖1项。在教学研究方面,获国家级教学成果二等奖1项、黑龙江省教学成果一等奖2项,二等奖2项,校级教学成果一等奖4项。主编教材9部,翻译外版教材2部,与国外大学教师合著教材2部,主审教材2部。2007年获宝钢优秀教师奖。2012年被评为黑龙江省师德先进个人。2014年被评为黑龙江省优秀教师。
赵玲玲,博士,哈尔滨工业大学计算机科学与技术学院讲师,硕士生导师。国家精品开放课程“C语言程序设计”团队成员,中国大学MOOC平台开设的MOOC课程“程序设计基础”和“C语言程序设计精髓”的主讲教师之一。校内主讲计算机专业本科生课程“高级语言程序设计”。研究方向包括智能信息处理、目标跟踪。主持完成国家自然科学基金、高等院校博士点基金项目等多项科研项目,发表论文40余篇,已授权发明专利1项,软件著作权登记2项。
叶麟,博士,哈尔滨工业大学计算机科学与技术学院讲师。中国大学MOOC平台开设的MOOC课程“程序设计基础”和“C语言程序设计精髓”的主讲教师之一。校内主讲计算机专业本科生课程“高级语言程序设计(Python)”和“C语言程序设计”。已发表论文10余篇。