C++语言的功能和方便性都强于C语言,只是由于其面向对象的特性比较复杂,因此很少被选为入门语言。实际上,C语言是C++的子集,C++对C语言的扩充可以分为与面向对象无关的新语法特性、面向对象的特性,以及泛型特性三个部分。如果放弃其中复杂的面向对象特性,以及泛型的绝大多数特性(但保留其中极其有用的标准模板库STL中的部分算法和容器),则剩余部分也十分适合做为入门语言来学,而且用这样的“简化”C++语言,或者说,“更强”的C++语言编写程序,既比用C语言更为方便和高效,又无需掌握写大型程序才会用到的庞杂的面向对象的特性 --- 学习成本增加很少而编程效率提高很多。
基于上述考虑,本课程虽然内容主要为C语言程序设计,但还是涉及了一部分C++的内容。本课程以实打实提高学生的实际编程能力为目标,只要能写出好程序,用的是C语言还是C++语言,并不重要。
授课内容13章,主要为以下两部分:
1) 1-12章: C语言程序设计
2) 13,14章 用C++的STL(标准模板库)轻松实现高效的排序和查找。这部分内容虽不多,但对于提高编写程序的效率极其有用。
总之,本门课最大的特点是:让学习者花费比学习C语言多不到10%的时间,就能享受C++语言带来的更多方便与效率
本课程作业和考试的题型90%以上都是在线提交程序,系统自动评测,容不得半点错误,这对学习者是非常严格而且有效的训练,符合当下顶尖IT企业招聘考核的形式,学习效果远胜于书面作业人工批改的形式。
本课程作业和考试网址:cxsjsxmooc.openjudge.cn
注意,不要写成 https://cxsjsxmooc.openjudge.cn/, 那样会访问不了!
如果访问不了,就注意浏览器地址栏里面是不是写了 https:// 不能有s!
郭炜老师还在中国大学MOOC开设另外三门好评如潮的4.9分高分课程,特别适合后续学习,请不要错过:
1) 程序设计与算法(二)算法基础(国家精品)
https://www.icourse163.org/course/PKU-1001894005
2) 程序设计与算法(三)C++面向对象程序设计(国家精品)
https://www.icourse163.org/course/PKU-1002029030
3) 实用Python程序设计 (强烈推荐,Python的百科书式大全课程,入门、提高均非常适合!)
https://www.icourse163.org/course/PKU-1460924165
掌握C语言的语法规则知识并会灵活运用。掌握C++语言中,对C语言的与面向对象无关的一小部分较容易且对提高编程效率大有帮助的扩展特性。
第一章 C语言快速入门
1.1 信息在计算机中的表示
1.2 C语言快速入门
1.3 变量和数据类型初探
1.4 变量和数据类型进阶
1.5 常量
1.6 Dev C++编译环境介绍
第一章讲义
Openjudge在线做题必读
习题边写边说(视频)
第一章测验
第二章 输入输出和基本运算
2.1 输入输出进阶
2.2 算术运算符和算术表达式
2.3 关系运算符和逻辑表达式
2.4 其他运算符及运算符优先级
第二章讲义
习题边写边说(视频)
第二章测验
第三章 分支语句和循环语句
3.1 if语句
3.2 switch语句
3.3 for 循环之一
3.4 for 循环之二
3.5 while循环和do while循环之一
3.6 while循环和do while循环之二
第三章讲义
习题边写边说(视频)
第三章测验
第四章 循环综合应用
4.1 break语句和continue语句
4.2 OJ输入数据的处理
4.3 用freopen重定向输入
4.4 循环例题选讲 1
4.5 循环例题选讲 2
4.6 循环例题选讲 3
第四章讲义
第四章测验
第五章 数组
5.1 数组
5.2 筛法求素数
5.3 数组初始化
5.4 数组越界
5.5 二维数组
第五章讲义
第五章测验
第六章 函数与位运算
1. 函数(1)
2. 函数(2)
3.递归初步
4. 库函数和头文件
5. 位运算
6. 位运算思考题
第六章讲义
第六章测验
第七章 字符串
1. 字符串的形式和存储
2. 输入字符串
3. 字符串库函数
4. 例题:编写判断子串的函数
第七章讲义
第七章测验
第八章 指针(一)
1. 指针的基本概念和用法
2.指针的意义和互相赋值
3.指针的运算
4.指针作为函数参数
5.指针和数组
第八章讲义
第九章 指针(二)
1. 指针和二维数组、指向指针的指针
2. 指针和字符串
3. 字符串库函数
4. void指针和内存操作函数
5. 函数指针
第九章讲义
第八九章测验
第十章 程序结构和简单算法
1. 结构(struct)
2. 全局变量、局部变量、静态变量
3. 变量的作用域和生存期
4. 选择排序和插入排序
5. 冒泡排序
6.程序或算法的时间复杂度
第十章讲义
第十章测验
第十一章 文件读写
1. 文件读写概述
2. 文本文件读写
3. 二进制文件读写概述
4. 创建和读取二进制文件
5. 修改二进制文件
6. 文件拷贝程序
第十一章讲义
第十二章 C++ 的STL(一)
1. STL排序算法sort
2. STL二分查找算法
3. multiset
4. 自定义排序规则的multiset
5. set
第十二章讲义
第十二章测验
第十三章 C++的STL(二)
1. multimap
2. map
第十三章讲义
第十三章测验
课本习题解答
《新标准C++程序设计教程》习题解答
零起点课程,基本上不需要预备知识,初中生也可以学习。